在多列上创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之前,有必要删除它。 唯一密钥不会添加到现有表中。