这是我的场景(我使用的是 datanucleus,JDO,但我认为它也适用于 JPA):
tx.begin();
Dog d = new Dog();
persistenceManager.persist(d);
d.setName("Doggie");
tx.commit();
在上面的代码中,名称“Doggie”在数据库中没有持久化。然而,当做
tx.begin();
Dog d = new Dog();
d.setSize(10);
persistenceManager.persist(d);
Dog d2 = dogDao.getDogBySize(10);
d2.setName("Doggie");
tx.commit();
有用!
这种行为是否是因为我的“第二只”狗在某种程度上是一个托管实例,被从数据库中取出,而在第一个示例中,该对象是非托管的?
它是特定于 JDO 的行为吗?
谢谢!