这就是我所拥有的:
class A{
Ref<foo> b;
Ref<foo> c;
int code;
Date timestamp
}
SQL语句的伪“where”子句如下所示:
其中b =对象或(c =对象和代码= 1)按时间戳排序
用简单的英语,给我A的所有记录,如果b等于特定的对象,或者当代码等于1时c等于指定的对象。用时间戳命令结果。
复合查询部分是否可能带数据存储(Objectify)?我真的不想做两个查询并合并结果,因为我必须按时间戳排序。
感谢任何帮助。
P.S。我已经尝试了
new FilterPredicate(b, EQUAL, object)
这不起作用,因为实体类型不是支持类型。
谢谢!
答案 0 :(得分:0)
将原生数据存储区Key
对象传递给FilterPredicate
。 Google SDK Key
,而不是通用的Objectify Key<?>
。
通常,在对属性进行过滤时,Objectify会将Ref<?>
和Key<?>
对象转换为本机数据存储区键。使用谷歌提供的FilterPredicate
,这不是一个选项。所以你必须手动进行翻译。
Objectify存储所有Key<?>
和Ref<?>
字段以及本机数据存储Key
,因此您可以自由地交换它们(如果需要,甚至可以更改字段类型)。