Ref'd实体

时间:2017-01-21 05:28:56

标签: google-app-engine filter objectify datastore

这就是我所拥有的:

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)

这不起作用,因为实体类型不是支持类型。

谢谢!

1 个答案:

答案 0 :(得分:0)

将原生数据存储区Key对象传递给FilterPredicate。 Google SDK Key,而不是通用的Objectify Key<?>

通常,在对属性进行过滤时,Objectify会将Ref<?>Key<?>对象转换为本机数据存储区键。使用谷歌提供的FilterPredicate,这不是一个选项。所以你必须手动进行翻译。

Objectify存储所有Key<?>Ref<?>字段以及本机数据存储Key,因此您可以自由地交换它们(如果需要,甚至可以更改字段类型)。