簡體   English   中英

JPA 保存失敗和事務回滾

[英]JPA save failing and transaction rolling back

我正在嘗試從 db 獲取記錄並與 dto 進行比較以進行審計。 如果我找到一條記錄,我將使用更新的字段更新記錄並將主鍵 ID 設置為 null 並嘗試將其保存為新記錄。 如果數據庫中沒有記錄,我將 dto 轉換為實體並保存它。

List<AuditReconciliation> auditiedList = reconDao.getAuditedReconActionDtlList(Arrays.asList(entity.getReconActionDtlId()));
    AuditReconciliation auditRecon = !auditiedList.isEmpty() ?auditiedList.get(0) : new AuditReconciliation();
    if(!entity.getDisposition().equals(auditRecon.getDisposition())) {
    auditRecon.setLastEditedDate(entity.getLastEditedDate()!= null? entity.getLastEditedDate():presentDate);
        auditRecon.setReconActionDtlAuditId(null);
        return auditRecon;

在保存時,我得到了 org.hibernate.HibernateException:實例的標識符從 1 更改為 null 2021-02-04 21:02:27.983 錯誤 14048 --- [io-8080-ApplicationInterceptorexec 異常覆蓋]通過提交異常。 任何幫助,將不勝感激。

根據您的解釋,將 null 設置為主鍵不會插入新記錄,也不會將 null 更新為主鍵,因此導致錯誤,因為object is tied with persistence context

你的解決方案應該是什么
Scenario 1:如果我找到了一條記錄

Solution 1:嘗試使用新字段更新相同的記錄,而不將 null 設置為主鍵。
Solution 2:刪除現有記錄並插入新記錄。

Scenario 2:如果沒有找到記錄

Solution :如您所述,直接插入新記錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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