【发布时间】:2015-10-26 13:19:57
【问题描述】:
有没有办法告诉 Hibernate 首先检查由表生成器生成的当前主键是可用的还是过时的?
我有一个应用程序,它使用休眠在我的数据库的几个表中创建新条目,但有时这些生成的值已经过时并且已经被使用。发生这种情况是因为该数据库被相当多的应用程序和脚本使用,其中一些使用“select MAX(ID)+1”-Keygeneration“策略”。更改所有其他组件以使用表生成器并不是一个真正的选择(尽管它会解决问题),所以我必须确保从表生成器获得的值确实可用。
有没有办法告诉 Hibernate 在尝试将新记录插入数据库(并抛出 ConstraintViolationException)之前检查生成值的有效性? 或者,有没有办法在 hibernate 使用它们生成新的 Id 之前手动更新生成器表?
显而易见的方法是运行像 UPDATE pk_generator SET value=(SELECT MAX(ID)+1 from members) WHERE column='members' 这样的原生查询
【问题讨论】:
标签: java sql-server database hibernate