我有一个用户,他有很多书:
public class User {
@OneToMany
@Cascade( { org.hibernate.annotations.CascadeType.ALL })
@JoinTable(name="user_book")
private Set<Book> books;
}
这将在数据库中创建一个连接表:
|user_id|book_id|
-----------------
|1 |2 |
|1 |3 |
|2 |1 |
问题是唯一约束仅在book_id
列上。这意味着 2 个用户不能拥有同一本书。如果我想添加到user(id:1)
a book(id:1)
,那么我得到:BatchUpdateException: Duplicate entry
这是正常的吗?或者这是错误?如果不是错误,我如何配置休眠以在对(user_id
,book_id
)上创建唯一约束,而不仅仅是book_id
在连接表中。
休眠:3.6.4.Final
MySQL:5.0.21