2 つのエンティティ (ニュースとタグ) に対して多対多の双方向関係を構築しようとしています。
しかし、ニュース(セットを持っている)を保存または更新しようとすると、タグにIDがすでに入力されていても、どういうわけか常にタグの新しいセットが保存されます
私の注釈に何か問題がありますか?
News.java
@Id
@GeneratedValue(generator = "increment")
@GenericGenerator(name = "increment", strategy = "increment")
@Column(name = "NEWS_ID")
public Long getId() {
return id;
}
@ManyToMany(fetch = FetchType.LAZY, cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@Cascade( org.hibernate.annotations.CascadeType.SAVE_UPDATE )
@JoinTable(name = "NEWS_TAGS", joinColumns = @JoinColumn(name = "NEWS_ID"), inverseJoinColumns = @JoinColumn(name = "TAG_ID"))
public Set<Tag> getTags() {
return tags;
}
タグ.java
@Id
@GeneratedValue(generator = "increment")
@GenericGenerator(name = "increment", strategy = "increment")
@Column(name = "TAG_ID")
public Long getId() {
return id;
}
private Collection<News> news;
@JsonIgnore
@ManyToMany(cascade = { CascadeType.PERSIST, CascadeType.MERGE }, mappedBy = "tags")
public Collection<News> getNews() {
return news;
}
ニュースDAO
public void save(News news){
this.hibernateSessionFactory.getCurrentSession().saveOrUpdate(news);
}
私がやりたいのは、「ニュース」を保存すると、タグが存在する場合は関連するセットが無視され、タグが存在しない場合は新しいものを挿入することです。これは可能ですか?
お知らせ下さい