gpt4 book ai didi

java - com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException : Cannot delete or update a parent row: a foreign key constraint fails

转载 作者:行者123 更新时间:2023-12-02 10:36:30 25 4
gpt4 key购买 nike

我要按 id 删除对象,但收到如下错误:

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:无法删除或更新父行:外键约束失败(mydatabaseassignmentaudit,约束 FKqgsllo6dm5kdx7ptc3qu5mefd 外键 (auditor_group_id) 引用 auditor_group (auditor_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);
}

我的表格的映射如下所示:

enter image description here

选择.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> {

}

我只需要通过其id删除assignmentAudit,这样selectionauditGroup在以下情况下保持不变且不受影响assignmentAudit 已删除。

最佳答案

您必须从 @ManyToOne 映射中删除 cascade=CascadeType.ALL

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

关于java - com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException : Cannot delete or update a parent row: a foreign key constraint fails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53257329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com