Objectify:获取字符串列表不等于提供的值

时间:2013-06-21 16:57:00

标签: java google-app-engine google-cloud-datastore objectify

我需要获取datePublished IS NOT ""的项目列表。但是,下面的代码不起作用。有任何想法吗?感谢

Query<Diagram> q=ofy.query(Diagram.class).filter("datePublished !=", "").order("-likes").limit(18);

1 个答案:

答案 0 :(得分:4)

在GAE数据存储区中应用不等式过滤器时存在一些限制。 您可以在此处阅读更多内容:https://developers.google.com/appengine/docs/java/datastore/queries

在这种情况下,要在datePublished上存在不等式,您必须先在同一字段上订购,然后才能在另一个字段上订购。

因此,假设datePublished字段已编入索引:

Query<Diagram> q=ofy.query(Diagram.class).filter("datePublished !=", "").order("datePublished").order("-likes").limit(18);

假设这不是迁移问题,您可能需要考虑在存储时对该数据进行非规范化,例如设置'noDatePublished'布尔值。