Hibernate 联接表上的唯一约束
我有一个用户,他有很多书:Hibernate 联接表上的唯一约束,hibernate,jpa,Hibernate,Jpa,我有一个用户,他有很多书: public class User { @OneToMany @Cascade( { org.hibernate.annotations.CascadeType.ALL }) @JoinTable(name="user_book") private Set<Book> books; } 问题是唯一约束仅位于book\u id列上。 这意味着2个用户不能拥有同一本书。 如果我想添加到用户(id:1)一本书(id:1),那
public class User {
@OneToMany
@Cascade( { org.hibernate.annotations.CascadeType.ALL })
@JoinTable(name="user_book")
private Set<Book> books;
}
问题是唯一约束仅位于book\u id
列上。
这意味着2个用户不能拥有同一本书。
如果我想添加到用户(id:1)
一本书(id:1)
,那么我得到了:BatchUpdateException:Duplicate entry
这正常吗?还是这是臭虫?
若不是bug,那个么我如何配置hibernate来创建对的唯一约束(user\u id
,book\u id
),而不仅仅是对联接表中的book\u id
)
休眠:3.6.4.最终版
MySQL:
5.0.21
您的关联对许多人来说都是一个关联。这意味着一个用户可以拥有多本书。如果您希望一本书能够由多个用户共享,请将其设置为多人关联:一个用户将有多本书,而一本书将有多个用户
|user_id|book_id|
-----------------
|1 |2 |
|1 |3 |
|2 |1 |