1
我有一個包含評論列表的Story,與JoinTable映射。 我注意到,每次我給列表添加一個新評論時,hibernate刪除並重新創建與故事相關的連接表中的所有條目。 我希望它只是添加一個新的表格。 在下面的代碼中,保存方法由Spring Data實現。 我錯過了什麼嗎? 謝謝。當添加到列表時,Hibernate重新創建連接表
Story.java:
@Entity
public class Story implements Serializable {
@OneToMany
@JoinTable(name="UserComment", joinColumns = @JoinColumn(name = "Story_id"), inverseJoinColumns = @JoinColumn(name = "Comment_id"))
private List<Comment> userComments;
...
Comment.java:
@Entity
public class Comment implements Serializable {
...
添加一個新評論:
Comment comment = new Comment();
comment.setContent(content);
commentRepository.save(comment);
story.getUserComments().add(comment);
storyRepository.save(story);
Hibernate的日誌上storyRepository.save(故事)執行:
Hibernate: delete from UserComment where Story_id=?
Hibernate: insert into UserComment (Story_id, Comment_id) values (?, ?)
Hibernate: insert into UserComment (Story_id, Comment_id) values (?, ?)
Hibernate: insert into UserComment (Story_id, Comment_id) values (?, ?)
Hibernate: insert into UserComment (Story_id, Comment_id) values (?, ?)
Hibernate: insert into UserComment (Story_id, Comment_id) values (?, ?)
Hibernate: insert into UserComment (Story_id, Comment_id) values (?, ?)
Hibernate: insert into UserComment (Story_id, Comment_id) values (?, ?)
庫版本:
- 的Hibernate 4.3.5
- 春數據JPA 1.6.0
我是唯一一個認爲,有這麼多問題,我們應該沒有hibernate管理的關聯更好?我將編寫一個簡單的本地查詢來將註釋添加到列表中。 – xtian
我的建議是保持簡單。 –
就像編寫我自己的查詢一樣簡單,爲什麼我應該更改我的模型以適應持久性引擎特性? @Query(value =「insert into UserComment(Story_id,Comment_id)VALUES(:storyId,:commentId)」,nativeQuery = true) – xtian