【问题标题】:How to lock a database row using JPA until another table is updated如何使用 JPA 锁定数据库行,直到另一个表被更新
【发布时间】:2018-07-25 07:14:02
【问题描述】:

我是使用 Hibernate/Spring 的 JPA 新手。我的用例是:

我有 2 张桌子 - AB。当用户查询表A并获得一行时,它应该被锁定并且不会发布给其他任何人,直到用户使用返回的数据和更新的表B完成一些操作。

我可以在表A 中添加一列(比如IS_LOCKED),然后在操作完成后更新它。但我想弄清楚是否有更好的解决方案来解决这个问题。不确定javax.persistence.LockModeType 在这种情况下是否有用。

JPA 专家请多多指教。

【问题讨论】:

  • “一些操作”是什么意思?能给我举个例子吗?例如,JavaEE 和 JPA 在 REST 调用中创建事务,因此该行将成为事务的一部分。
  • @kedenk 例如从 FLIGHTS 表中获取航班号并更新 BOOKING 表中的参考。假设 FLIGHTS 表不会更新。
  • 这两个操作是在一个 REST 调用中执行的?如前所述,JavaEE 和 JPA 在调用时创建事务。所以你应该被保存并且不需要显式锁定。但是如果你想设置一个特定的日志,第一个答案对你有帮助。
  • 我这里没有做任何 REST 调用。

标签: java database jpa


【解决方案1】:

是的,您可以使用 HibernateLockModeType 来做到这一点。

根据您的需要有很多可能性,所以最好的方法是从here 中选择您的。 希望这会有所帮助

【讨论】:

    猜你喜欢
    • 2015-08-05
    • 2019-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    • 1970-01-01
    • 1970-01-01
    • 2017-04-02
    相关资源
    最近更新 更多