1

GAE 1.8 にアップグレードしてから、Objectify で @Id でアノテーションを付けると、散らばった ID が表示されます。

@Id
private Long id;

クラウド プラットフォームでホットスポットを回避するために ID を分散させる必要があることは理解していますが、Objectify で古い増分 ID を取り戻す方法はありますか? UI に 16 進数の値 (1DZENH6BSOW など) を表示して、生成された大量の 64 ビット ID を回避する必要があります。

二次注釈 @IdLegacy が @Id と連携して機能することをうれしく思います。その後、@Id は引き続き長い ID を生成し、表示目的でレガシー ID を使用できます。

解決:

コンストラクター内に、ID が存在しない場合に ID を割り当てる単純なコードがあります。

if (getId() == null){
    ObjectifyFactory f = new ObjectifyFactory();
    Key<MyEntity> key = f.allocateId(MyEntity.class);
setId(key.getId());
}       
4

1 に答える 1

1

私の知る限り、Objectify は App Engine Datastore の分散 ID の動作を継承します。

Objectify イシュー トラッカーを簡単に確認したところ、増分 ID のリクエストがまだ行われていないことがわかりました。Objectify 開発者にリクエストを送信します。http://code.google.com/p/objectify-appengine/issues/list

于 2013-10-03T06:28:22.040 に答える