【发布时间】:2018-07-25 07:14:02
【问题描述】:
我是使用 Hibernate/Spring 的 JPA 新手。我的用例是:
我有 2 张桌子 - A 和 B。当用户查询表A并获得一行时,它应该被锁定并且不会发布给其他任何人,直到用户使用返回的数据和更新的表B完成一些操作。
我可以在表A 中添加一列(比如IS_LOCKED),然后在操作完成后更新它。但我想弄清楚是否有更好的解决方案来解决这个问题。不确定javax.persistence.LockModeType 在这种情况下是否有用。
JPA 专家请多多指教。
【问题讨论】:
-
“一些操作”是什么意思?能给我举个例子吗?例如,JavaEE 和 JPA 在 REST 调用中创建事务,因此该行将成为事务的一部分。
-
@kedenk 例如从 FLIGHTS 表中获取航班号并更新 BOOKING 表中的参考。假设 FLIGHTS 表不会更新。
-
这两个操作是在一个 REST 调用中执行的?如前所述,JavaEE 和 JPA 在调用时创建事务。所以你应该被保存并且不需要显式锁定。但是如果你想设置一个特定的日志,第一个答案对你有帮助。
-
我这里没有做任何 REST 调用。