我的基类A
具有X
,Y
和Z
个子类型。
我只需查询A
的子类型子集,例如仅X
或Y
和Z
个子类型。
要做到这一点,因为Objectify加载器.type()
方法不接受多种类型,我添加
q.filter("^i in", types);
到我的查询,其中^i
是Objectify添加到A
(基类)类的属性,它用于处理polimorphic查询,types
包含X
, Y
,Z
类名。它完美地运作:我可以获得所需子类型的实体。
现在假设我的Z
子类具有status
属性(不是A
类的属性)。当我尝试同时过滤^i
和status
属性时,我总是得到空结果。
例如,我希望获得A
个子类型Y
和Z
的所有实体,但只有Z
属性的status
个实体等于"active"
。
我按以下方式构建了我的查询:
ObjectifyService.ofy().load().type(A.class)
.filter("^i in", Arrays.asList(new String[] {"Y", "Z"})
.filter("status", "active")
.list();
这将返回一个空列表。如果我删除了status
过滤器,则会按预期返回X
和Z
个实体。如果查询仅按Z
类型进行过滤,则status
过滤器效果很好。
由于我需要Y
和Z
个实体,我需要一种方法来过滤status
属性,因为状态不存在或等于“有效”:不是Z
的类型的第一个子句,第二个是thoose的类型。
你有什么建议吗?感谢