バックエンド 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 の命名方法に関する推奨事項はありますか?
ご提案いただきありがとうございます。
さようなら、ミスター・スラブ