正在使用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;
}
然后,我尝试使用祖先(TopParent)和一些引用键C获取事务中的所有B对象 - 但它一直返回0个元素。
这是我的查询:List> bKeys = oft.query(B.class).ancestor(TopParent).filter("referenceKeyToC", new Key(C.class), b.referenceKeyToC).listKeys();
当我保存 B 时,它正确设置了父项和引用键ToC..
如果我在没有密钥过滤器的情况下运行查询,例如:List> bKeys = oft.query(B.class).ancestor(TopParent).listKeys();
它返回所有 B 对象 - 这些 B 对象都包含它们的引用 KeyToC
任何想法??
杰斯珀
这几乎可以肯定是一个索引问题。 为了使该查询正常工作,必须定义两个索引:
- 引用键ToC上的单属性索引
- {祖先,引用KeyToC}上的多属性索引
在 Objectify 3.x 中,属性默认具有单属性索引,但如果已将@Unindexed添加到类 B,则需要将@Indexed放在 referenceKeyToC 上。
多属性索引在数据存储索引.xml中定义。 如果在开发模式下运行此查询,则环境应提供所需的 xml 代码段。