多くの本を持っているユーザーがいます:
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: Duplicate entry
これは正常ですか?またはこれはバグですか?バグでない場合は、結合テーブルだけでなく、ペア ( user_id
、 )に一意の制約を作成するように休止状態を構成する方法を教えてください。book_id
book_id
休止状態:3.6.4.Final
MySQL:5.0.21