当前位置: 首页 > 知识库问答 >
问题:

com.mysql.jdbc.exceptions.jdbc4。无法删除或更新父行:外键约束失败

冷正青
2023-03-14

我将按id删除对象,但出现如下错误:

com.mysql。jdbc。例外情况。jdbc4。MySQLIntegrityConstraintViolationException:无法删除或更新父行:外键约束失败(mydatabaseassignmentaudit,constraintFKqgsllo6dm5kdx7ptc3qu5mefd外键(auditor\u group\u id)引用auditor\u group\u 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
}

作业Audit.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;
}

审核组。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时保持不变且不受影响。

共有1个答案

尹钱青
2023-03-14

您必须删除cascade=CascadeType。来自@ManyToOne映射的所有

或者更改它,以便级联类型。不包括删除

 类似资料:
  • 问题内容: 进行时: 错误: 这是我的桌子: 问题答案: 照原样,必须先删除Advertisers表中的行,然后才能删除它引用的Jobs表中的行。这个: …实际上与应有的相反。实际上,这意味着您必须在作业表中有一条记录,然后才是广告商。因此,您需要使用: 纠正外键关系后,您的delete语句将起作用。

  • 我还在学习hibernate中的很多东西,以及如何处理hibernate中表与表之间的关系,所以在我的一个项目中,我面临着以下问题: 问题出在哪里? 我想做什么? 我正在尝试删除package实体,但不删除package表中引用的用户 我正在通过packageDAO对package实体调用delete

  • 我在这里使用了多对一双向关系,一旦我被放入数据库,我就不能删除文件,如果我试图删除,我会遇到异常,无法删除或更新父行:外键约束失败。 这是我的另一个实体类... 嗨这是我的完整栈迹

  • 问题内容: 我正在研究一个基本示例来测试操作,但出现异常。 我有以下实体: Employee.java EmpDetails.java 现在我在数据库中有员工ID为10的记录,在员工详细信息表中有相应的记录。 现在,当我在查询下面运行时: 我在想hibernate将删除员工记录和相应的员工详细信息记录,因为我已设置要删除的层叠类型。但我得到异常为: 引起原因:com.mysql.jdbc.exce

  • 现在,当我运行命令php artisan migrate时出现问题,它成功地迁移了我的所有表,但当我运行rollback命令时,它会抛出错误,错误是出于我的目的 我的专业移民: 即使我使用onDelete(“cascade”),我也不知道问题出在哪里。我们将非常感谢您的帮助!

  • 我正在处理一个测试操作的基本示例,但我得到了异常。 我有以下实体: 有人能帮助我如何测试级联删除选项在这里吗?