3 回答

TA貢獻1934條經驗 獲得超2個贊
您應該@JoinColumn在一個相關對象上使用,mappedBy在第二個對象上使用。嘗試使其成為這樣:
@OneToMany(cascade = CascadeType.ALL, mappedBy="post")
private List<Comment> comments;
在 Post 實體中,在 Comment 實體中:
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "post_id")
private Post post;
mappedBy需要在第二個實體中存儲帶有屬性名稱的字符串。如果您存儲有關帖子的信息的字段名稱為“post”,則必須將其設置為“post”。

TA貢獻1813條經驗 獲得超2個贊
這應該是一個非常直接和簡單的案例。
你的Post類應該是這樣的:
@OneToMany(mappedBy="post",
cascade=CascadeType.ALL)
private List<Comment> comments;
這里重要的部分是mappedBy,它指的是Comment類中的post屬性。
請記住,將級聯設置為 ALL 意味著刪除帖子將刪除與該帖子相關的所有評論(我認為這就是您想要的)。
評論類
完成此操作后,您現在可以處理您的Comment類,它將如下所示:
@ManyToOne(cascade= {CascadeType.PERSIST, CascadeType.MERGE,
CascadeType.DETACH, CascadeType.REFRESH})
@JoinColumn(name="post_id")
private Post post;
@JoinColumn 指數據庫中保存與評論相關的帖子 ID 的列,這就是帖子和評論之間的聯系。

TA貢獻1831條經驗 獲得超9個贊
您還可以@JoinColumn在父類中配置(這一行)
@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "post_id")
private List<Comment> comments = new ArrayList<>();
但你需要刪除整個代碼
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "post_id")
private Post post;
來自你的評論課。這種映射可以用來避免添加@JsonIgnore注釋 getter。
現在,您可以輕松保存帶有評論列表的帖子類,并且還可以獲得帶有關聯評論列表的帖子類。
添加回答
舉報