繁体   English   中英

更新依赖项后使用TableGenerator的ConstraintViolationException

[英]ConstraintViolationException using TableGenerator after updating dependencies

在将依赖项从Spring 4.1.6.RELEASE更新到5.1.4.RELEASE并将Hibernate 4.3.9.Final更新到5.4.1.Final之后,我的一些测试用例因主键上的ConstraintViolationException而开始失败。

由于历史原因,我们生成主要像这样:

@Id
@GeneratedValue(strategy = GenerationType.TABLE, generator = "NAME_HERE")
@TableGenerator(name = "NAME_HERE", table = "SEQUENCE_TABLE_NAME", pkColumnName = "Name", pkColumnValue = "ENTITY_NAME", valueColumnName = "VALUE_COLUMN_NAME", allocationSize = 100)

正常情况下使用该应用程序似乎没有问题,但是在运行测试时确实存在问题。

我注意到,ConstraintViolationException仅发生在在同一测试用例中插入多个值的表中。 所以我认为行以某种方式分配了相同的主键。

在本地运行测试似乎不是问题,因此它也可能与在构建服务器上运行测试的方式有关。 但是,在升级依赖项之前这不是问题。

我检查了序列值是否高于数据库中的最新值,但是在升级依赖项之前,这也不是问题。

我希望震动某人的记忆:-)

我发现了这一点: Hibernate,@ SequenceGenerator和allocationSize

这让我找到了“ hibernate.id.new_generator_mappings”

按照: https : //docs.jboss.org/hibernate/orm/5.0/userguide/html_single/Hibernate_User_Guide.html#configurations

*此设置指示新的org.hibernate.id.IdentifierGenerator是否用于AUTO,TABLE和SEQUENCE。

现有应用程序可能想要禁用此功能(将其设置为false),以实现从3.x和4.x到5.x的升级兼容性。*

将此设置为false可解决问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM