您好我正在使用Objectify,我有以下内容:
public static final Key<A> TopParent = new Key<A>(A.class,1)
class A {
}
class B {
@Parent
Key parent;
Key referenceKeyToC
}
class C {
@Parent
Key parent;
}
然后我试图在带有Ancestor(TopParent)和一些参考键C的TRANSACTION中获取所有B对象 - 但它继续返回0个元素。
这是我的查询: 列表&gt; bKeys = oft.query(B.class).ancestor(TopParent).filter(“referenceKeyToC”,new Key(C.class),b.referenceKeyToC).listKeys();
当我保存B时,它已正确设置父和referenceKeyToC ..
如果我在没有密钥过滤器的情况下运行查询,例如: 列表&gt; bKeys = oft.query(B.class).ancestor(TopParent).listKeys();
它返回所有B对象 - 这些B对象都包含它们的referenceKeyToC
有任何想法吗??
的Jesper
答案 0 :(得分:1)
这几乎肯定是一个索引问题。为了使该查询起作用,您必须定义两个索引:
在Objectify 3.x中,默认情况下属性具有单属性索引,但如果已将@Unindexed添加到B类,则需要将@Indexed放在referenceKeyToC上。
多属性索引在datastore-indexes.xml中定义。如果在开发模式下运行此查询,环境应该为您提供所需的xml片段。