JDO保持现有实体在DB中创建新条目

时间:2014-01-12 00:27:04

标签: merge jdo persist

这是我第一个使用JDO的例子 我有班级帐号:

public class Compte
{
    @PrimaryKey
    @Persistent(valueStrategy=IdGeneratorStrategy.INCREMENT)
    private int idCompte;
    // other attributes
    private Regle regle;
    // ....
}

我在表格中保存了实体,当我想要创建一个新的Compte i retreive时 其中一个Regle和我将它添加到新的Compte并且我使Compte持久化。 我这样做:

Compte compte = new Compte();
Regle regle = retreiveRegleByName(name);
compte.setRegle(regle);
saveCompte(compte);

// this is the code of the method saveCompte()
public void creerCompteParticulier(CompteParticulier compteParticulier)
{
    // Persistence of a particular client account
    PersistenceManager pm = pmf.getPersistenceManager();
    Transaction tx = pm.currentTransaction();
    try
    {
        // begin transaction
        tx.begin();
        pm.makePersistent(compteParticulier);
        tx.commit();

    } catch (Exception exp)
    {

        LOGGER.error("Error: ", exp);
    }
    finally
    {
        if (tx.isActive())
        {
            tx.rollback();
        }
        pm.close();
    }        
}

新的Compte被添加到特定的表中,但我的问题是: 我在表格中有一个新实体。

你能帮助我吗,我想创建一个新的Compte,从数据库中检索出Regle,而不是新的Regle。

注意:在JDO中不存在类似于JPA的merge()方法吗? 我认为在jpa中,使用merg()解决了这个问题。

1 个答案:

答案 0 :(得分:3)

当对象是现有的分离对象时,

makePersistent会对现有对象进行“合并”。您的对象显然没有分离,因此建议您阅读分离对象。阅读日志会给出充分的见解