2016-09-29 172 views
-1

当从DB读取并编辑了对象但保存过程中的对象时,我会决定是保存还是丢弃数据。但JPA/Hibernate会自动保存编辑后的数据(Auto Flush)。JPA-Hibernate保存未保存的数据

DB.beginTransaction 
try{ 
    MyObject myObj = DB.readMyObject(); 
    myObj.setCurrentTime(System.currentTimeinMills()); 

    MyObject myObj1 = DB.readMyObject(); 
    myObj1.setCurrentTime(System.currentTimeinMills()); 

     // myObj Edited. 
     // myObj1 Edited. 

    if(isPermittedToSave()){ 
      DB.persist(myObj); 
    } 
    DB.persist(myObj1); 

    DB.commitTransaction(); 
} Catch(Exception e) { 
    DB.rollbackTransaction(); 
} 

我会一直坚持“myObj1”。所有这些过程必须在单个事务下运行。

我该怎么做才能禁用JPA/Hibernate的这种行为。该解决方案还应该能够执行Lazy Fetch并更新“myObj”。

回答

0

我决定是保存还是丢弃数据。

这是长期运行的交易将派上用场的地方。如果您决定坚持更改,请提交交易。如果您决定放弃更改 - 回滚事务。

自动冲洗设置在这里不相关。另一方面,自动提交需要被禁用。

+0

亲爱的@Antoniossss感谢您的快速回复。你能建议我解决这个问题吗?谢谢。 – sam

+0

只要开始事务,完成你的工作,然后提交,如果你想保留更改或回滚,如果你想放弃它们。 – Antoniossss