バックエンド RDBMS として PostgreSQL で JPA + OpenJPA を使用します。テーブルの主キーは通常、SERIAL
/BIGSERIAL
列で構成されています。そのため、PostgreSQL は新しいエントリの ID を自動的に生成します ( strategy=GenerationType.IDENTITY
)。
ID プロパティの注釈は次のようになります。
@Id
@SequenceGenerator(name="myseq",sequenceName="foobartable_fooid_seq")
@GeneratedValue(generator="myseq",strategy=GenerationType.IDENTITY)
私の質問は:sequenceName
値を変更するだけで、この注釈ブロックを複数のエンティティにコピーして貼り付けることはできますか? sequenceName
テーブルごとに違います。しかし、すべてのエンティティの SequenceGenerator に名前を付けることができmyseq
ますか? または、各エンティティの SequenceGenerator に一意のジェネレータ名を指定する必要がありますか? それぞれの SequenceGenerator 名が永続ユニット内で一意でなければならないということですか?
データベースで sequenceName に使用されているのと同じ値を使用することは、おそらく良い考えでしょうか? だから私は次のようなものを書くだろう
@Id
@SequenceGenerator(name="foobartable_fooid_seq",sequenceName="foobartable_fooid_seq")
@GeneratedValue(generator="foobartable_fooid_seq",strategy=GenerationType.IDENTITY)
SequenceGenerators の命名方法に関する推奨事項はありますか?
ご提案いただきありがとうございます。
さようなら、ミスター・スラブ