これらの注釈は、2つのシーケンスを作成するのではなく、1つだけを作成します。これは正しい/期待されていますか?
これが予想される動作です。 @GeneratedValue(strategy = GenerationType.AUTO)
を使用する場合 、JPAプロバイダーは、特定のデータベースに適切な戦略を選択します。 Oracleの場合、これはSEQUENCEになります。何も指定しなかったため、Hibernateはhibernate_sequence
と呼ばれる単一のグローバルシーケンスを使用します。 。
これは正しいです?まあ、わかりません、それはあなたのニーズに依存します。念のため、Oracleシーケンスのデフォルトの最大値は1E + 27、つまり1,000,000,000,000,000,000,000,000,000です。多くの人にとってはそれで十分です。
これで、GenerationType.AUTO
を使用できるようになりました データベースがシーケンスを使用する場合でも、シーケンスの名前を制御します。
@Id
@GeneratedValue(strategy=GenerationType.AUTO, generator="my_entity_seq_gen")
@SequenceGenerator(name="my_entity_seq_gen", sequenceName="MY_ENTITY_SEQ")
private Long id;