我是 Objectify 的新手,并试图实现一对多的关系。我有实体Organization和实体Person。组织具有@Transient
属性List< Person > contactPeople。类 Person 具有@Parent
属性Key< Organization > organizationKey,我可以通过 setter 设置它。
我想在组织的处理程序中坚持contactPeople@PrePersist
。为此,我需要在 Person 中设置父键。
此处的Wiki说:“您无法在 @PrePersist 回调中更新 @Id 或 @Parent 字段;此时,已经使用完整的 Key 构造了低级实体,因此可以将其作为可选参数传入。 "
我不确定这仍然是准确的信息吗?因为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 项目。