我在objectify中有一个实体组,典型的是SomeParentClass和SomeChildClass。我想要执行类似的操作以从数据存储区加载SomeChildClass的实例。
ofy().load.type(SomeChildClass.class).id(idOfSomeChildClassInstace);
这没有返回任何结果。似乎您需要了解SomeChildClass的父级才能从日期存储中获取它。我知道这可行。
Key<SomeChildClass> k = Key.create(someParentClass.generateKey(), SomeChildClass.class, idOfSomeChildClassInstace);
ofy().load().key(k).now;
如果我想仅通过拥有SomeChildClass的ID来加载SomeChildClass的实例而又不知道父级该怎么办?
您不能这样做-实体的实际完整标识符是其每个祖先的种类和ID以及它自己的种类和ID。这就是为什么构建完整密钥有效,但是仅使用子实体ID无效的原因。另一种看待它的方法是,ID仅在同一父级的兄弟姐妹之间是唯一的。
解决问题的最简单方法是为您的子实体产生一个密钥,然后为其获取“网络安全字符串”。该字符串包含实体及其所有父代的所有信息,可用于完全重构完整ID。
使用objectify:
String websafeKey = Key.create(parentKey, Entity.class, id).getString();
Key<Entity> key = Key.create(websafeKey);
如果需要,您也可以使用低级api进行此操作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句