User {
Set<Book> _books;
@ManyToMany(cascade={CascadeType.MERGE})
@JoinTable(
name="BLETAG_LABEL",
joinColumns={@JoinColumn(name="TAG_ID", referencedColumnName="ID")},
inverseJoinColumns={@JoinColumn(name="LABEL_ID", referencedColumnName="ID")})
Set<Book>getBooks();
}
Book {
}
. 如果我将 CascadeType 设置为 PERSIST 并尝试使用这样的现有书籍(book1)创建用户,则会触发唯一约束......
Book book1 = new Book("book1"); user.getBooks().add(book1);
. 我目前的解决方案是将 CascadeType 合并并检查所有 user.getBooks() 如果该书已经存在。如果这本书不存在,我需要创建它(因为不是 CascadeType.PERSIST)
这是正确的解决方案吗?对于这种用例,有没有更好的“自动”解决方案?