1
2 개의 엔티티 (뉴스와 태그)에 대해 다 대다 양방향 관계를 가지려고합니다.Hibernate/JPA 양방향 캐스케이드 saveOrUpdate
하지만 (설정했다) 뉴스를 될 saveOrUpdate하려고 할 때, 어떻게 든 항상 태그도 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;
}
Tag.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;
}
NewsDAO 내가 원하는 무엇
public void save(News news){
this.hibernateSessionFactory.getCurrentSession().saveOrUpdate(news);
}
나는 "뉴스"를 저장할 때, 관련 세트 것입니다 태그가 존재하면 무시되고, 태그가 없다면 새로 삽입 될 것인가?
태그 객체가 이미 연결되어 있습니까 (연결된 객체를 최대 절전 모드로 전환합니까?)? –
웹 레이어에서만 문자열을 얻을 수 있기 때문에 뉴스에서 saveOrUpdate를 수행하기 전에 세트를 다시 만들고 (db에서 ID를 가져 와서 태그로 다시 설정해야합니다.) 최대 절전 모드가이 태그들을 인식하도록하는 방법이 있습니까? –
id뿐만 아니라 db에서 객체 (Tag)를 가져 오십시오. 이미 연결된 개체를 사용하면 작동합니다. –