Mar*_* M. 4 google-app-engine entity-framework objectify
我有一个objectify中的实体组,典型的SomeParentClass和SomeChildClass.我想做这样的事情从数据存储区加载SomeChildClass的实例.
ofy().load.type(SomeChildClass.class).id(idOfSomeChildClassInstace);
Run Code Online (Sandbox Code Playgroud)
这没有发现什么.似乎您需要知道SomeChildClass的父级才能从datestore获取它.我知道这是有效的.
Key<SomeChildClass> k = Key.create(someParentClass.generateKey(), SomeChildClass.class, idOfSomeChildClassInstace);
ofy().load().key(k).now;
Run Code Online (Sandbox Code Playgroud)
如果我想在不知道父级的情况下加载SomeChildClass的实例,只需具有SomeChildClass的id即可.
小智 16
你不能这样做 - 实体的实际完整标识符是它的每个祖先的种类和id以及它自己的种类和id.这就是为什么构建完整的密钥有效,但仅使用子实体id不起作用.另一种看待它的方式只是在同一父母的兄弟姐妹之间.
解决问题的最简单方法是为您的子实体生成一个密钥,然后为其获取"Web安全字符串".此字符串包含实体及其所有父项的所有信息,可用于完全重构完整ID.
使用客观化:
String websafeKey = Key.create(parentKey, Entity.class, id).getString();
Key<Entity> key = Key.create(websafeKey);
Run Code Online (Sandbox Code Playgroud)
如果需要,您也可以使用低级api执行此操作.
| 归档时间: |
|
| 查看次数: |
3096 次 |
| 最近记录: |