在同一个表中的并发插入操作之一中,我收到 ConstraintViolationException。
javax.persistence.PersistenceException: org.hibernate.exception.ConstraintViolationException:
could not insert:
Run Code Online (Sandbox Code Playgroud)
Hibernate 乐观锁可以在这方面帮助我吗?据我所知,乐观锁定适用于数据库中同一记录的更新/删除操作。
它也适用于插入查询吗?
我在目标表(实体)中创建了版本列。但仍然得到相同的异常(没有optimisticLockException或StaleObjectStateException)。
乐观锁定用于防止陈旧数据覆盖现有数据。由于您无法用另一个插入覆盖一个插入,因此执行乐观锁检查是没有意义的,因为数据库已经抛出了自己的异常 - ConstraintViolation 异常。如果插入失败,您可以从刷新或提交中获得 PersistenceException。您可以将 JPA 提供程序配置为在调用 persist 时抛出 EntityExistsException(如果已插入),除非您已经在 persist 上获取此异常,在这种情况下您可能会点击https://hibernate.atlassian.net/browse/HHH -4131
归档时间: |
|
查看次数: |
4336 次 |
最近记录: |