Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jpa 在对象上执行persist()时,JDO/ORMs的行为是什么?_Jpa_Persistence_Jdo - Fatal编程技术网

Jpa 在对象上执行persist()时,JDO/ORMs的行为是什么?

Jpa 在对象上执行persist()时,JDO/ORMs的行为是什么?,jpa,persistence,jdo,Jpa,Persistence,Jdo,下面是我的场景(我使用datanucleus、JDO,但我认为它也适用于JPA): 在上面的代码中,“Doggie”这个名字在数据库中不是持久的。 但是,什么时候, tx.begin(); Dog d = new Dog(); d.setSize(10); persistenceManager.persist(d); Dog d2 = dogDao.getDogBySize(10); d2.setName("Doggie"); tx.commit(); 它起作用了 这种行为是否是因为我的“第

下面是我的场景(我使用datanucleus、JDO,但我认为它也适用于JPA):

在上面的代码中,“Doggie”这个名字在数据库中不是持久的。 但是,什么时候,

tx.begin();
Dog d = new Dog();
d.setSize(10);
persistenceManager.persist(d);
Dog d2 = dogDao.getDogBySize(10);
d2.setName("Doggie");
tx.commit();
它起作用了

这种行为是否是因为我的“第二个”dog以某种方式是一个托管实例,从数据库中取出,而在第一个示例中,对象是非托管的

这是JDO特有的行为吗


谢谢

在上述代码中,数据存储中确实存在对名称的更新。。。当我运行它时。事实上,当您查看日志时,您会看到一个非常清晰的持久化插入,然后是一个更新,除非当您获得一个包含最新名称值的插入时使用乐观TXN。

为什么不只查看日志?它毕竟是来帮助你的。。。
tx.begin();
Dog d = new Dog();
d.setSize(10);
persistenceManager.persist(d);
Dog d2 = dogDao.getDogBySize(10);
d2.setName("Doggie");
tx.commit();