1

在同一个表中的一个并发插入操作中,我得到了 ConstraintViolationException。

javax.persistence.PersistenceException: org.hibernate.exception.ConstraintViolationException: 
could not insert:

Hibernate Optimistic Lock 可以在这方面帮助我吗?据我所知,乐观锁定在数据库中同一记录的更新/删除操作中起作用。

它也适用于插入查询吗?

我在目标表(实体)中创建了一个版本列。但仍然得到相同的异常(没有optimisticLockException 或StaleObjectStateException)。

4

1 回答 1

4

乐观锁定用于防止用过时的数据覆盖现有数据。由于您不能用另一个插入覆盖一个插入,因此执行乐观锁检查没有意义,因为数据库已经抛出了自己的异常 - ConstraintViolation 异常。如果插入失败,您可以从刷新或提交中获得 PersistenceException。如果已经插入,您可以配置您的 JPA 提供程序以在调用 persist 时抛出 EntityExistsException,除非您已经将其设置为 persist,在这种情况下您可能会点击https://hibernate.atlassian.net/browse/HHH -4131

于 2013-04-02T13:58:38.320 回答