首页 > 解决方案 > 无法一对多删除或更新父行 HIBERNATE

问题描述

当我尝试删除宠物时出现此错误。这只宠物有来访(孩子),但我在宠物实体中定义了 CASCADE.ALL。任何想法 ?错误:无法删除或更新父行:外键约束失败 ( web_customer_tracker. visits, CONSTRAINT visits_ibfk_1FOREIGN KEY ( pet_id) REFERENCES pets( pet_id))

 @Entity
@Table(name = "pets")
public class Pet {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "pet_id")
    private int pet_id;

    .....

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "visit_id")
    private Set<Visit> visits;

参观班:

@Entity
@Table(name = "visits")
public class Visit {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "visit_id")
    private int visit_id;

    @ManyToOne
    @JoinColumn(name = "pet_id")
    private Pet pet;

    ....

标签: springhibernate

解决方案


您以错误的方式使用 mappedBy, mappedBy 指的是对面的对象名称

像这样

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "pet")
private Set<Visit> visits;

或者如果你想通过JoinColum 试试这个来映射它

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "pet_id")
private Set<Visit> visits;

推荐阅读