我有一个用户,他有很多书:
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)
添加一本 book(id:1)
,那么我得到:BatchUpdateException:重复条目
这正常吗?或者这是错误?
如果不是错误,我如何配置hibernate以在对(user_id
,book_id
)上创建唯一约束,而不仅仅是在连接表中的book_id
上。
hibernate :3.6.4.Final
MySQL:5.0.21
最佳答案
您的关联是一对多。这意味着一个用户可以拥有多本书。如果您希望能够让多个用户共享一本书,请将其设为多对多关联:一个用户可以拥有多本书,而一本书可以有多个用户。
关于hibernate - 连接表的唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12771383/