使用datanucleus中的allowAttachOfTransient更新/合并瞬态对象

时间:2018-03-02 04:51:50

标签: jdo datanucleus

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();
        }
}

有什么想法吗?

0 个答案:

没有答案