問題:簡單的例子,我們有一個表:保存數據與uniq的領域
@Entity
@Table(name = "books")
public class Book {
// other columns
private Set<Genre> genres = new LinkedHashSet<>();
@ManyToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER)
@JoinTable(name = "book_genre", joinColumns = {@JoinColumn(name="book_id")}, inverseJoinColumns = {@JoinColumn(name="genre_id")})
@OrderBy("name ASC")
public Set<Genre> getGenres() {
return genres;
}
}
類型表(實體)具有獨特的列名,這列已經包含一行名例如流派,現在如果我會盡力保存新書實體相同流派名稱:
Set<Genre> newBookGenres = new LinkedHashSet<>();
Genre newBookGenre = new Genre("Example genre"); //new genre with name [Example genre]
newBookGenres.add(newBookGenre);
Book book = new Book(newBookGenres);
session.save(book);
它不會保存該書並拋出唯一列的異常(示例流派已存在於流派名稱中)。
問題:我該如何保存這樣的實體?我認爲,在保存圖書之前,我可以搜索類型該書類型名稱表,如果存在(在數據庫中)具有相同名稱的類型,那麼只需將書類型對象替換爲數據庫類型對象。但我不知道它是否會起作用,並相信有最簡單的方法。