簡體   English   中英

休眠單向一對多關系導致重復

[英]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'

我有兩個實體:

  • Form292車輛
  • 訪問區域理由

兩者的關系如下:

在 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM