0

ここからの Q&A に基づく: Get an Objectify Entity's Key

永続化されたオブジェクトの場合、次を使用してエンティティ キーを取得します。

@Transient
Key<Categoria> getKey() {
   return new Key<Categoria>(Categoria.class, id);
}

次のものと同じキーを返さない:

Objectify ofy = ObjectifyService.begin();
Key<Categoria> key = ofy.getFactory().getKey(someobject);

それともすべきですか?

私のモデルは次のようになります。

@Entity
class Categoria{
  @Parent
  private Key<Someclass> parentKey;

  @Transient
  Key<Categoria> getKey() {
   return new Key<Categoria>(Categoria.class, id);
 }
 // Code omitted
}
4

2 に答える 2

2

Categoriaフィールドがある場合にのみ、異なるキーが生成され@Parentます。その場合、クラスと ID とともに親キーを Key コンストラクターに渡す必要があります。

于 2012-05-25T19:37:59.060 に答える
0

そうすべき。私は常に長いIDから作成されたキーを介してObjectify Entitiesを取得します。必要に応じて、返されたキーを使用してキーから長い ID を取得することもできます。

編集:あなたがしようとしている方法でキーを取得することはできません。

あなたがしなければなりません。

Key<Car> rootKey = new Key<Car>(Car.class, 959);
Key<Car> keyWithParent = new Key<Car>(parent, Car.class, 959);

客観化ウィキより

したがって、この行では: Key key = ofy.getFactory().getKey(someobject);

キーは、親キーとカテゴリ キーの両方で構成されます

つまり、関数でルックアップを行うときに親キーを含める必要があります

Key<Categoria> getKey() {
 return new Key<Categoria>(parentKey, Categoria.class, id);
}
于 2012-05-25T11:33:06.353 に答える