我試圖洗掉評級表中的記錄,然后
無法添加或更新子行:外鍵約束失敗 (
fyprojectdb.ratings, CONSTRAINTFKdyash6f91887unaan9mj9b460FOREIGN KEY (answer_id) REFERENCESanswers(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
uj5u.com熱心網友回復:
原因在cascade = CascadeType.ALL這里
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "userId")
private User user;
這意味著User在洗掉任何Ratings.
更好地RatingEntity用于物體和RATINGS表名。
一般規則
永遠不要cascade與@ManyToOne協會的一部分一起使用!
也總是使用fetch = FetchType.LAZYwith @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;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/490052.html
