【问题标题】:How to know whether persistent entity was updated or not? Spring Transaction Management如何知道持久实体是否已更新? Spring事务管理
【发布时间】:2016-12-27 09:21:25
【问题描述】:

我正在尝试使用 JPA 实现乐观锁定。我读到添加一个附加字段,带有@Version 注释的版本可用于应用隐式乐观锁定。实施后,我将能够防止多个用户尝试更新同一个实体的情况下丢失更新。如果进行了任何更新并且如果版本字段与实体的版本字段不匹配,则意味着实体被其他用户同时更新,则不会更新任何行,从而防止丢失更新。

我正在使用 Spring Transaction 管理支持来更新实体,我所要做的就是更新 Entity 字段,并且数据库更新由 Spring 事务管理器负责,这意味着我不需要显式调用更新查询。

我的问题是,我如何才能知道为特定用户所做的更新是否成功?

【问题讨论】:

    标签: spring hibernate jpa spring-transactions optimistic-locking


    【解决方案1】:

    OptimisticLockException 如果操作不成功将被抛出 - 如果其他事务之前修改过实体。相关线程了解更多详情:

    【讨论】:

    • 感谢您的回复。是的,将抛出 OLE 异常。但我的问题是,因为我正在尝试使用 Spring 事务管理,所以我没有明确执行更新或提交。那么,我怎样才能捕捉到这个异常并采取适当的措施呢?
    • 根据stackoverflow.com/questions/17203452/…,它可以在被调用的方法之外进行处理,也可以在内部显式调用 entityManager.flush()。
    猜你喜欢
    • 2011-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-16
    • 1970-01-01
    相关资源
    最近更新 更多