在多列上创build组合唯一约束

这是我的模特:

class User {...} class Book { User author; int number; } 

每个作者的书号从1开始,然后递增。 所以我们会有John Grisham的书1,2,3,George Martin的Book 1..5等。

有没有一个独特的限制,我可以放在Book ,这将保证我们没有两个相同的作者相同数量的书籍? 类似于@Column(unique = true) ,但是这个约束只适用于Author X number的组合?

使用@UniqueConstraint

 @Table( uniqueConstraints= @UniqueConstraint(columnNames={"author_id", "number"}) ) @Entity class Book extends Model { @ManyToOne @JoinColumn(name = "author_id") User author; int number; } 

当表格被创build之前,有必要删除它。 唯一密钥不会添加到现有表中。