Datanucleus文件说......
datanucleus.allowAttachOfTransient
当您使用瞬态对象(设置了PK字段)调用PM.makePersistent时,如果启用此功能,它将首先检查数据存储中是否存在具有相同标识的对象,如果存在,将合并到该对象(而不仅仅是尝试持久化新对象)。 {真假} 网址:http://www.datanucleus.org/products/datanucleus/jdo/persistence.html
然而,当执行时导致唯一约束违规,因为datanucleus尝试插入记录而不是更新..
代码段..
Account account = new account();
account.setAccountNo(12345); //primary key - existing account in db
account.setOtherAttribute("other attrib");
persist (account);
......
persist(account)
{
PersistenceManagerFactory pmf = JDOHelper.getPersistenceManagerFactory("Account");
PersistenceManager pm = pmf.getPersistenceManager();
pm.setProperty("datanucleus.allowAttachOfTransient", true);
Transaction tx=pm.currentTransaction();
try
{
tx.begin();
pm.makePersistent(account);
tx.commit();
}
}
有什么想法吗?