两个或更多用户试图在Hibernate中插入表获取唯一约束违例异常。如何处理任何人都可以帮助我。提前谢谢。
答案 0 :(得分:3)
如果要在具有唯一索引或约束的列中插入值,并且此列的插入值已存在于另一行中,则始终显示此错误。这可能是多线程环境中并发访问的问题。
根据问题的根源,有一些策略可以解决它:
- 使用生成器(序列或类似)生成唯一ID。 Hibernate可以帮助您使用<generator>
标记内的<id>
标记
- 使用<version>
标记以避免同时修改同一实体
- 编写一个生成唯一值的方法
- 使用Java synchronized
语句同步部分代码
- 使用无状态会话,并在异常重试后插入新值
- 纠正代码中的逻辑错误
- 还有一些......