【发布时间】:2010-08-30 22:31:24
【问题描述】:
我使用 apache.JDO /w DataNucleus 建立了一个小项目。我可以在没有任何问题的情况下保存数据,但是在尝试更新或删除它们时我卡住了。
场景如下:
- 我创建了一个对象并将其持久化,它获取和 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)
【问题讨论】:
标签: java jdo datanucleus