Objectify:按某种Ref(或Key)过滤

时间:2014-03-13 21:18:03

标签: google-app-engine google-cloud-datastore objectify

说我有这些课程:

@Entity class MyEntity {
    @Id String id;
    @Index Ref<?> ref;
}

@Entity class Kind2 {
    ...
}

我可以查询MyEntitiy引用ref的任何实例的所有Kind2个对象吗?如果是这样,怎么样?

3 个答案:

答案 0 :(得分:2)

不可能

我认为数据结构的某些内容可能存在缺陷。即使你忘记了数据存储区,只需在普通的java中使用instance of,很多时候它就是结构不对的标志。

但无论如何,请记住,在使用数据存储区时,您需要索引查询的内容。因此,如果您想查询ref类,请找出索引它的方法。可能是MyEntity上的另一个属性是要走的路。

答案 1 :(得分:2)

Moshe的回答确实是正确的。但是,您可以通过在密钥上执行不等式查询来技术上破解可行的方法。即>= KEY('Kind2', 0)<= KEY('Kind2', MAX_LONG)。如果您的实体有父母,这会变得更加复杂。

除非你真的知道自己在做什么,否则我不建议这样做。

答案 2 :(得分:2)

我是这样实现的:

articles/view&id=".$menu['items'][$itemId]['link'].

像你一样将ofy().load().type(MyEntity.class).filter("ref =",Ref.create(new Kind2(kind2Id))).list(); 添加到ref属性中。

它将检索它已过滤。