簡體   English   中英

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:無法刪除或更新父行:外鍵約束失敗

[英]com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails

我將通過ID刪除對象,但出現如下錯誤:

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:不能刪除或更新父行,外鍵約束失敗( mydatabaseassignmentaudit ,約束FKqgsllo6dm5kdx7ptc3qu5mefd外鍵( auditor_group_id )參考auditor_groupauditor_group_id ))

我通過ID刪除的方法是:

@DeleteMapping("/assignment-audit/{id}")
    public ResponseEntity<String> deleteAssignmentAudit(@PathVariable("id") long id) {
        System.out.println("Delete AssignmentAudit with ID = " + id + "...");

        assignmentAuditRepository.deleteById(id);

        return new ResponseEntity<>("Assignment Audit has been deleted!", HttpStatus.OK);
    }

我的表的映射如下:

在此處輸入圖片說明

Selection.java

@Entity
@Table(name="selection")
public class Selection implements Serializable {


    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long selectionId;

    @Column(name="selection_date")
    private String selectionDate;

    @Column(name="selected_by")
    private String selectedBy;

    @Column(name="pan_exim_number")
    private Long panEximNumber;

    @Column(name="name")
    private String name;

    @Column(name="address")
    private String address;

    @Column(name="phone_number")
    private String phoneNumber;

    @Column(name="selection_type")
    private String selectionType;

    @Column(name="consignment_no")
    private String consignentNo;

    @Column(name="consignment_date")
    private String consignentDate;


    @Column(name="selection_period_from_date")
    private String selectionPeriodFromDate;

    @Column(name="selection_period_to_date")
    private String selectionPeriodToDate;

    @Column(name="agent_no")
    private Long agentNo;

    @Column(name="custom_office")
    private String customOffice;


    @OneToMany(mappedBy="selection")
    private List<AssignmentAudit> assignmentAudit;
//i omitted getters and setters as i have in my program
}

AssignmentAudit.java

@Entity
@Table(name = "assignmentaudit")
public class AssignmentAudit implements Serializable {


    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;

    @ManyToOne(fetch = FetchType.EAGER, optional = false,cascade=CascadeType.ALL)
    @JoinColumn(name = "auditorGroupId")
    private AuditorGroup auditorGroup;

    @Column(name = "assignmentDate")
    private String assignmentDate;

    @ManyToOne(fetch = FetchType.EAGER, optional = false,cascade=CascadeType.ALL)
    @JoinColumn(name = "selectionId")
    @JsonIgnore
    private Selection selection;
}

AuditorGroup.java

@Entity
@Table(name = "auditor_group")
public class AuditorGroup implements Serializable {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long auditorGroupId;

    @Column(name="group_desc")
    private String groupDesc;

    @Column(name="from_date")
    private String fromDate;

    @Column(name="to_date")
    private String toDate;
}

AssignmentAuditRepository.java

public interface AssignmentAuditRepository extends JpaRepository<AssignmentAudit, Long> {

}

我只需要刪除assignmentAuditid ,使得selectionauditGroup時保持不變,並不會受到影響assignmentAudit被刪除。

您必須從@ManyToOne映射中刪除cascade=CascadeType.ALL

或者,更改它,以便不包括CascadeType.DELETE

暫無
暫無

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

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