在多个列上创建复合唯一约束

2022-08-31 12:58:46

这是我的模型:

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

每个书号从每个作者 1 个开始,然后向上递增。因此,我们将有约翰·格里沙姆(John Grisham)的第1,2,3册,乔治·马丁(George Martin)的第1..5册,等等......

有没有一个独特的限制,我可以放置,以保证我们没有两本书与同一作者的相同数量?与 类似,但约束仅适用于 ? 的复合Book@Column(unique = true)Author X number


答案 1

使用@UniqueConstraint

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

答案 2

如果之前创建了表,则必须将其删除。唯一键不会添加到现有表中。


推荐