[英]Properly Implementing a One to Many Unidirectional Relationship in Hibernate
[英]Hibernate unidirectional one to many relationship causing duplicates
你好程序員
我面臨一個關於已完成保存的問題,並在日志中創建以下錯誤:
> javax.faces.FacesException#{Form292VehicleComponent.saveForm292Vehicle(Form292VehicleComponent.form292Vehicle)}:
> org.springframework.dao.DataIntegrityViolationException: Duplicate
> entry '3a35781b-d2f6-46e7-a72b-605557b29cee' for key
> 'accessareaJustifications_ID'; SQL [n/a]; constraint [null]; nested
> exception is org.hibernate.exception.ConstraintViolationException:
> Duplicate entry '3a35781b-d2f6-46e7-a72b-605557b29cee' for key
> 'accessareaJustifications_ID'
我有兩個實體:
兩者的關系如下:
在 Form292Vehicle 實體中:
@DiffIgnore
@JsonIgnore
private List<AccessAreaJustification> accessareaJustifications;
在 AccessAreaJustifications 中,有兩個字段用於只保留一個 Form292Vehicle 的 ID,沒有任何關系。 這意味着 Form292Vehicle 與 List 具有單向一對多關系。
當應用程序運行時,會創建一個包含每個實體 ID 的連接表
該表將所有實體的Ids 保留為一種形式292Vehicle Id 可以有多個accessJustifications Ids。
當用戶更新申請表並執行保存時會出現問題。 即使用不同的 Id 創建一個重復的應用程序並執行保存。
我認為問題在於 Hibernate 映射。 我可以解決這個問題嗎?
您的列表可能包含重復項。 改用Set
或確保沒有重復項
得到的錯誤解決方案與 List 或 Set 都不對應。 這是兩個事務試圖在數據庫上為 Object accessareaJustifications 提交相同的條目。 當一個事務鎖定插入而另一個事務執行相同操作時,就會發生這種情況。 所以當數據庫提交事務時,發現重復條目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.