对 Ref'd 实体的复合或 FilterPredicate 查询
Composite or FilterPredicate query on Ref'd entity
这是我的:
class A{
Ref<foo> b;
Ref<foo> c;
int code;
Date timestamp
}
SQL 语句的伪 "where" 子句像这样:
其中 b = 对象或(c = 对象和代码 = 1)按时间戳排序
用简单的英语,如果b等于特定对象或者当代码等于1时c等于指定对象,给我所有A的记录。用时间戳排序结果。
复合查询部分甚至可以使用数据存储 (Objectify) 吗?我真的不想做两个查询并合并结果,因为我必须按时间戳排序。
感谢任何帮助。
P.S。我已经试过了
new FilterPredicate(b, EQUAL, object)
这没有用,因为实体类型不是支持类型。
谢谢!
将本机数据存储 Key
对象传递给 FilterPredicate
。 Google SDK Key
,而不是通用的 Objectify Key<?>
。
通常在过滤属性时,Objectify 会为您将 Ref<?>
和 Key<?>
对象转换为本机数据存储键。对于 google-supplied FilterPredicate
,这不是一个选项。所以你必须手动进行翻译。
Objectify 存储所有 Key<?>
和 Ref<?>
字段以及本机数据存储 Key
,因此您可以自由交换它们(如果需要,甚至可以更改字段类型)。
这是我的:
class A{
Ref<foo> b;
Ref<foo> c;
int code;
Date timestamp
}
SQL 语句的伪 "where" 子句像这样:
其中 b = 对象或(c = 对象和代码 = 1)按时间戳排序
用简单的英语,如果b等于特定对象或者当代码等于1时c等于指定对象,给我所有A的记录。用时间戳排序结果。
复合查询部分甚至可以使用数据存储 (Objectify) 吗?我真的不想做两个查询并合并结果,因为我必须按时间戳排序。
感谢任何帮助。
P.S。我已经试过了
new FilterPredicate(b, EQUAL, object)
这没有用,因为实体类型不是支持类型。
谢谢!
将本机数据存储 Key
对象传递给 FilterPredicate
。 Google SDK Key
,而不是通用的 Objectify Key<?>
。
通常在过滤属性时,Objectify 会为您将 Ref<?>
和 Key<?>
对象转换为本机数据存储键。对于 google-supplied FilterPredicate
,这不是一个选项。所以你必须手动进行翻译。
Objectify 存储所有 Key<?>
和 Ref<?>
字段以及本机数据存储 Key
,因此您可以自由交换它们(如果需要,甚至可以更改字段类型)。