Merge JDO持久化现有实体在数据库中创建新条目

Merge JDO持久化现有实体在数据库中创建新条目,merge,jdo,persist,Merge,Jdo,Persist,这是我第一个使用JDO的示例 我有班级帐户: public class Compte { @PrimaryKey @Persistent(valueStrategy=IdGeneratorStrategy.INCREMENT) private int idCompte; // other attributes private Regle regle; // .... } 我在表regle中保存了实体,当我想创建一个新的Compte时,我会检索它

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

public class Compte
{
    @PrimaryKey
    @Persistent(valueStrategy=IdGeneratorStrategy.INCREMENT)
    private int idCompte;
    // other attributes
    private Regle regle;
    // ....
}
我在表regle中保存了实体,当我想创建一个新的Compte时,我会检索它 其中一个正则表达式,我将它添加到新的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已添加到特定表中,但我的问题是: 我在表regle中有一个新实体

你能帮我一下吗?我想用从数据库中检索到的正则表达式创建一个新的Compte,而不是一个新的正则表达式

注意:JDO中不存在像JPA中那样的merge()方法吗?

我认为在jpa中,这个问题可以通过使用merg()来解决。

makePersistent
在对象是现有分离对象时对现有对象进行“合并”。您的对象显然未分离,因此建议您在分离对象时仔细阅读。阅读日志将提供大量的洞察力

makePersistent
在对象是现有分离对象时,对现有对象进行“合并”。您的对象显然未分离,因此建议您在分离对象时仔细阅读。阅读日志将提供大量的洞察力

makePersistent
在对象是现有分离对象时,对现有对象进行“合并”。您的对象显然未分离,因此建议您在分离对象时仔细阅读。阅读日志将提供大量的洞察力

makePersistent
在对象是现有分离对象时,对现有对象进行“合并”。您的对象显然未分离,因此建议您在分离对象时仔细阅读。阅读日志会有很多洞察

compteParticulier.idCompte的价值是什么?是的,idCompte=0,因为它是一个新实例,但idRegle不是zoro(非空),因为我从数据库中检索到它,
compteParticuler.idCompte
?是的,idCompte=0,因为它是一个新实例,但idRegle不是zoro(非空),因为我从数据库中检索到它,
compteParticuler.idCompte
?是的,idCompte=0,因为它是一个新实例,但idRegle不是zoro(非空),因为我从数据库中检索到它,
compteParticuler.idCompte
?是否有可能是0?是的,idCompte=0,因为Compte它是一个新实例,但idRegle不是zoro(非null),因为我从DBI检索它,我读到方法pm.makePersistent()重新附加了对象。那么为什么它会创建一个新的Regle对象呢?它创建一个新对象是因为它没有分离。你不能重新连接一开始没有分离的东西;纽科姆私人有限公司(regle);pm.makePersistent(newCompte);但我总是遇到同样的问题,它创建了一个新的Regle实例,并且类是可分离的,是吗?也许不是,。很明显,日志会告诉您发生了什么,但我看不到对它的引用。我将此注释添加到实体detacheable=“true”的声明中,现在它运行良好。非常感谢。我的最后一个问题是:如何激活日志以显示数据库操作的日志。在datanucleus.log中,我只找到了enhacer的日志。我读到方法pm.makePersistent()重新附加了对象。那么为什么它会创建一个新的Regle对象呢?它创建一个新对象是因为它没有分离。你不能重新连接一开始没有分离的东西;纽科姆私人有限公司(regle);pm.makePersistent(newCompte);但我总是遇到同样的问题,它创建了一个新的Regle实例,并且类是可分离的,是吗?也许不是,。很明显,日志会告诉您发生了什么,但我看不到对它的引用。我将此注释添加到实体detacheable=“true”的声明中,现在它运行良好。非常感谢。我的最后一个问题是:如何激活日志以显示数据库操作的日志。在datanucleus.log中,我只找到了enhacer的日志。我读到方法pm.makePersistent()重新附加了对象。那么为什么它会创建一个新的Regle对象呢?它创建一个新对象是因为它没有分离。你不能重新连接一开始没有分离的东西;纽科姆私人有限公司(regle);pm.makePersistent(newCompte);但我总是遇到同样的问题,它创建了一个新的Regle实例,并且类是可分离的,是吗?也许不是,。很明显,日志会告诉您发生了什么,但我看不到对它的引用。我将此注释添加到实体detacheable=“true”的声明中,现在它运行良好。非常感谢。我的最后一个问题是:如何激活日志以显示数据库操作的日志。在datanucleus.log中,我只找到了enhacer的日志。我读到方法pm.makePersistent()重新附加了对象。那么为什么它会创建一个新的Regle对象呢?它创建一个新对象是因为它没有分离。你不能重新连接一开始没有分离的东西;纽科姆私人有限公司(regle);pm.makePersistent(newCompte);但我总是遇到同样的问题,它创建了一个新的Regle实例,并且类是可分离的,是吗?也许不是,。很明显,日志会告诉您发生了什么,但我看不到对它的引用。我将此注释添加到实体detacheable=“true”的声明中,现在它运行良好。非常感谢。我的最后一个问题是:如何激活日志以显示数据库操作的日志。在datanucleus.log中,我只找到了enhacer的日志。