2012-01-16 51 views
0

我们有一个使用@Version的实体类。null Hibernate @Version,为什么没有StaleObjectStateException?

@Version 
protected Long auditVersion; 

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

为什么不呢?

回答

1

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

相关问题