我有一個課程評論一對多的關系。在課程表中有 id 和 title 列。在 Review 表中有 id、comment 和 course_id,其中“course_id”作為 FK 指向 Course id。我想實現這樣的場景,一旦課程被刪除,相關的評論就會被自動刪除。我有以下代碼:@Entity@Table(name = "course")public class Course { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private int id; @Column(name = "title") private String title; @OneToMany(mappedBy = "course", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true) private List<Review> reviews; public void addReview(Review review){ if(reviews==null) reviews = new ArrayList<>(); reviews.add(review); } //other codes below omitted}@Entity@Table(name = "review")public class Review { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") private int id; @Column(name = "comment") private String comment; @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @JoinColumn(name = "course_id") private Course course;//other codes omitted}
1 回答

侃侃爾雅
TA貢獻1801條經驗 獲得超16個贊
您的評論從未真正屬于該課程,因為您從未初始化關聯的擁有部分:Review.course。將您的addReview()方法更改為
@OneToMany(mappedBy = "course", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
private List<Review> reviews = new ArrayList<>();
public void addReview(Review review){
review.setCourse(this);
reviews.add(review);
}
添加回答
舉報
0/150
提交
取消