![](/img/trans.png)
[英]Updating a child object in a save cascade result in ConstraintViolationException using spring data repository
[英]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.