在分离的实体上调用jpa persist不会插入重复的行。为什么?

时间:2015-11-02 06:47:03

标签: java hibernate jpa

我们已经意识到我们项目中的某些类使用户 em.persist(书);更新现有的图书记录。

首先检索本书

em.find(id);

然后通过用户输入修改字段,然后保留

em.persist(书);

虽然这个工作没有任何问题,但到目前为止它让我很好奇,因为我希望JPA在调用em.persist时插入一个具有不同id的新书。在分离的对象引用时,我找不到任何关于持久化方法的行为的资源。通过了。

提前致谢

public void A() throws Exception{ // bean method

         try {

       oEntity=oServis.findById(kesintiLogEntity.getOrtaklikId()); //Transactional spring service method returns an existing record
         oEntity.setOrtakSureAy(ortakEntity.getOrtakSureAy()-1);//modify detached object
         oServis.saveOrtak(oEntity); //em.persist(oEntity);
} 
catch (Exception e){
}
}

1 个答案:

答案 0 :(得分:0)

它工作正常,因为你的find方法抓住一个带有id字段的现有项目,如果你想要新对象只是创建一个新对象并从你找到的对象复制值然后保留新创建的对象

编辑:

请看这里是一个描述实体状态的好图表 http://www.objectdb.com/java/jpa/persistence/managed