我已经使用 apache.JDO /w DataNucleus 建立了一个小项目。我可以在没有任何问题的情况下保存数据,但是在尝试更新或删除它们时我卡住了。
场景如下:
- 我创建一个对象并坚持它,它得到和 id
@首要的关键 @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 私人长ID;
- 我关闭 PersistenceManager
- 在应用程序中,我修改了我的对象(瞬态)
- 我尝试再次持久化(id 字段相同),但不是更新而是创建一个新对象
在 Google App Engine 中,同样的场景给了我一个更新(预期的结果 - 见下文)。
我还将给你一个小代码示例来举例说明我的问题:
PersistenceManager pm = PMF.getPM(); Option dao = new Option(String.class, "field", "A"); pm.makePersistent(dao); pm.close(); System.out.println("1"); for (Object o : Model.findAll(Option.class)) System.out.println(((选项) o).getValue()); dao.setValue("B"); pm = PMF.getPM(); pm.makePersistent(dao); pm.close(); System.out.println("2"); for (Object o : Model.findAll(Option.class)) System.out.println(((选项) o).getValue()); pm = PMF.getPM(); pm.makePersistent(dao); pm.deletePersistent(dao); pm.close(); System.out.println("3"); for (Object o : Model.findAll(Option.class)) System.out.println(((选项) o).getValue());
我希望输出是:
1 一种 2 乙 3
但相反,它给了我:
1 一种 2 一种 乙 3 一种 乙
关于我做错了什么的任何建议?(顺便说一句,我使用非事务性 RW,启用了 RetainValues)