私は Objectify を初めて使用し、1 対多の関係を実装しようとしています。エンティティOrganizationとエンティティPersonがあります。組織には@TransientプロパティList< Person > contactPeopleがあります。クラス Person には@ParentプロパティKey< Organization > organizationKeyがあり、セッターを介して設定できます。
Organization のハンドラでcontactPeopleを保持したいと思います。@PrePersistそのためには、Person に親キーを設定する必要があります。
Wikiには次のように書かれています。 「@PrePersist コールバックで @Id または @Parent フィールドを更新することはできません。この時点までに、低レベルのエンティティは完全なキーで構築されているため、オプションのパラメータとして渡すことができます。 "
これはまだ正確な情報かどうかわかりません。com.google.appengine.api.datastore.Entityハンドラーで取得したオブジェクトのキーにはPrePersist、文字通り「no-id-yet」というキーがあるためです。
これをどのように実装しますか?
ありがとうございました!
2011 年 11 月 17 日の更新:
新しい Objectify4 では、次のような半自動の関係を作成できます。
class Beastie {
@Parent
@Load
ParentThing parent;
@Id Long id;
@Load({"bigGroup", "smallGroup"})
SomeThing some;
@Load("bigGroup")
List<OtherThing> others;
@Load
Ref<OtherThing> refToOtherThing;
Ref<OtherThing> anotherRef; // this one is never fetched automatically
}
新しいバージョンの進化する設計ドキュメントです。
これは大きなニュースです。Twigの作者である John Patterson は、本日 Objectify プロジェクトに参加しました。