簡體   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