Merge JDO持久化现有实体在数据库中创建新条目
这是我第一个使用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时,我会检索它
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的日志。