Hibernate 乐观锁定并发插入可能吗?

ift*_*i24 1 hibernate jpa

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

javax.persistence.PersistenceException: org.hibernate.exception.ConstraintViolationException: 
could not insert:
Run Code Online (Sandbox Code Playgroud)

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

它也适用于插入查询吗?

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

Chr*_*ris 5

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