这是我第一个使用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()解决了这个问题。
答案 0 :(得分:3)
makePersistent
会对现有对象进行“合并”。您的对象显然没有分离,因此建议您阅读分离对象。阅读日志会给出充分的见解