頭が回らない問題があります。休止状態では、次のことに問題はありません。
@GeneratedValue( strategy = GenerationType.AUTO, generator = "email-seq-gen" )
@SequenceGenerator( name="email-seq-gen", sequenceName="EMAIL_SEQ_GEN", allocationSize=500 )
それから私のschema.ddlにはこれがあります:
CREATE SEQUENCE EMAIL_SEQ_GEN START 1 INCREMENT 500;
ここで見ることはあまりありません。すべてが期待どおりに機能します。ただし、プロバイダーを EclipseLink に切り替えると、次のエラーが発生します。
The sequence named [EMAIL_SEQ_GEN] is setup incorrectly. Its increment does not match its pre-allocation size.
もちろん、グーグルで検索すると、初期値が 1 の場合に EclipseLink が負の数を作成し、allocationSize と等しくなければならないことがわかります。
「initialValue=500」を追加し、DDL スクリプトを「START 500」に更新すると、これは修正されますが、番号付けは 1 ではなく 500 から始まります。これはEclipseLinkのバグですか、それとも私が理解していないことがありますか? 1 から始まり、エンティティに合わせて調整された割り当てサイズ (この場合は 500) を持つシーケンスを生成したいと考えています。どうすればEclipseLinkでそれを行うことができますか?
ありがとう!
これを尋ねる別の方法は....次の DDL を考えると:
CREATE SEQUENCE EMAIL_SEQ_GEN START 1 INCREMENT 500;
エンティティに注釈を付けてEclipseLinkで使用する正しい方法は何ですか?
EclipseLink に DDL を生成させると、次のようになります。
@GeneratedValue( strategy = GenerationType.AUTO, generator = "email-seq-gen" )
@SequenceGenerator( name="email-seq-gen", sequenceName="EMAIL_SEQ_GEN", initialValue=1, allocationSize=500 )
これを生成します:
CREATE SEQUENCE EMAIL_SEQ_GEN INCREMENT BY 500 START WITH 500;
EclipseLinkを使用して「START WITH 1」でDDLを作成することは不可能であることを意味します。