null Hibernate @Version,为什么没有StaleObjectStateException?

时间:2012-01-16 09:19:28

标签: hibernate jpa

我们有一个使用@Version的实体类。

@Version
protected Long auditVersion;

如果有两个线程都试图插入第一次出现的实体怎么办?实体的两个实例都将auditVersion设置为null。似乎Hibernate没有注意到乐观锁定失败,我没有得到我预期的StaleObjectStateException

为什么不呢?

1 个答案:

答案 0 :(得分:4)

因为乐观锁定用于处理并发更新和删除。如果两个线程尝试插入具有相同ID的两个实体,则主键上的唯一约束足以检测冲突。不需要乐观锁定。