繁体   English   中英

我无法删除记录“无法删除或更新父行:外键约束失败。我该如何解决这个问题?

[英]I cannot delete a record "Cannot delete or update a parent row: a foreign key constraint fails. How do I fix this?

我试图删除评级表中的记录,然后

无法添加或更新子行:外键约束失败( fyprojectdb . ratings , CONSTRAINT FKdyash6f91887unaan9mj9b460 FOREIGN KEY ( answer_id ) REFERENCES answers ( answer_id ))

发生此错误。 如何修复此错误。 我已经正确映射了两个实体。

@Entity
@Table(name = "ratings")
public class Ratings {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long rating_id;

    @Column(nullable = false, unique = false, length = 45)
    private Short ratingValue;

    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "userId")
    private User user;

    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "answer_id")
    private Answer answer;

    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "question_id")
    private Question question;
//getters and setters


@Entity
@Table(name = "answers")
public class Answer {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long answer_id;

    @Column(nullable = false, unique = false, length = 100)
    private String fullAnswer;

    /*Many to one mapping question*/
    @ManyToOne(cascade = CascadeType.REMOVE)
    @JoinColumn(name = "question_id")
    private Question question;

    /* Many to One mapping with users*/
    @ManyToOne(cascade = CascadeType.REMOVE)
    @JoinColumn(name = "userId")
    private User user;
//getters and setters

原因是这里的cascade = CascadeType.ALL

@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "userId")
private User user;

这意味着在删除任何Ratings后必须删除User

最好使用RatingEntity作为实体,使用RATINGS作为表名。

一般规则

切勿将任何cascade与关联的@ManyToOne部分一起使用!

还要始终将fetch = FetchType.LAZY@ManyToOne一起使用。

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "userId")
    private User user;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "answer_id")
    private Answer answer;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "question_id")
    private Question question;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM