1. ホーム
  2. java

コンポジットの作成 複数のカラムに一意な制約をかける

2023-09-14 23:01:30

質問

これは私のモデルです。

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

すべての本の番号は、著者ごとに1から始まり、上に向かって増加します。ですから、John Grishamの1,2,3巻、George Martinの1...5巻、などといった具合です。

に置くことができるユニークな制約はありますか? Book に置くことができ、同じ著者による同じ番号の2冊の本がないことを保証するようなユニークな制約はありますか?同様に @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; 
}