ORMにJavaとJPAを使用しています。
最初は、エンティティ キーを次のように定義していました。
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Key key;
しかし、その結果、ID がかなり速く、予測できない方法で成長していました (...19,20,22,1003...1007,1014,1015,2004...)
これは、「最も単純なキー フィールドは長整数値であり、オブジェクトが初めてデータストアに保存されるときに、クラスの他のすべてのインスタンスで一意の値が JPA によって自動的に入力される長整数値です。長整数値です。キーは @Id アノテーションと @GeneratedValue(strategy = GenerationType.IDENTITY) アノテーションを使用します"
だから私はこの単体テストを見つけて、そこで行われた方法に切り替えました:
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Long id;
いくつかの GQL ステートメントを更新した後、正常に移行されましたが、キーが毎回 1000 ずつ増加しています。
GenerationType.TABLE を使用する必要がありますか? それとも、Key フィールドではなく Long で IDENTITY を使用するべきでしたか?
ライブ(ベータ版)アプリでこれを変更し続ける前に、決定的な答えを得たいと思っています。残念ながら、開発環境でこれまでに使用したすべてのスキームは連続したキーになるため、展開する以外に新しいアプローチをテストする方法はありません。
前もって感謝します。