現在、GWT、GAE、JPA を ORM として使用しています。GAE が生成しているキーが大きすぎて、RequestFactory を使用してモバイル デバイスで使用できないという問題があります。小さいリストのデータ量は、文字列に変換したときの ID/KEY のサイズのために圧倒的です。
継承を処理できるように、キーに String を使用しています。
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Extension(vendorName = "datanucleus", key = "gae.encoded-pk", value = "true")
protected String key;
これにより、非常に長い例 "agxzbWFydGJhcnNpdGVyFAsSDUVzdGFibGlzaG1lbnQYuAIM" であるキーが作成され、キーにオブジェクト タイプと親を格納するために大きくなります。
より小さな一意の ID を作成する方法が必要ですが、GAE で継承を処理する機能はまだあります。@Id/key として Long を試しましたが、String/Key キーに組み込まれている関係のために、オブジェクトで @OneToMany 関係を使用できませんでした。
もう 1 つのオプションは、クラスごとにシーケンスを作成し、その ID に Long プロパティを使用することです。以下に例を示しますが、アプリ エンジンで生成された長いシーケンスを処理する方法がわかりません。
@GeneratedValue プライベート ロングフレンドリー クラス固有キー。
アドバイスをいただければ幸いです。各クラスタイプのシーケンスを使用する以外に別のオプションがある場合は興味がありますが、そうでない場合は、特定のクラスのシーケンス (@ID ではない) を作成する例はありますか?