【问题标题】:JPA-Hibernate persist data which didn't saveJPA-Hibernate 持久化未保存的数据
【发布时间】:2016-09-29 09:54:27
【问题描述】:

当一个对象从数据库中读取并对其进行编辑但在保存过程中时,我会决定是保存还是丢弃数据。但是 JPA/Hibernate 会自动保存编辑后的数据(Auto Flush)。

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”。

【问题讨论】:

    标签: hibernate jpa


    【解决方案1】:

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

    这就是长时间运行的事务会派上用场的地方。如果您决定保留您的更改 - 提交事务。如果您决定放弃更改 - 回滚事务。

    自动冲洗设置与此处无关。另一方面,需要禁用自动提交。

    【讨论】:

    • 亲爱的@Antoniossss 感谢您的快速回复。你能建议我解决这个问题吗?谢谢。
    • 刚开始事务,做你的工作,然后如果你想持久化更改提交,如果你想放弃它们,则回滚。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    • 2012-01-14
    • 1970-01-01
    • 1970-01-01
    • 2022-11-28
    • 1970-01-01
    相关资源
    最近更新 更多