簡體   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