使用 objectify 创建 "Or" 子句

Make "Or" clause using objectify

我正在尝试使用 "OR" 子句在 Objectify 中创建查询,但我在任何地方都找不到如何执行此操作。 即使阅读 Objectify v5 的 user's guide,我也没有发现任何东西。 我只找到了这个 here,但它不适用于我。

在 sql 中,子句是这样的:

SELECT * FROM bulletin WHERE visibility = 'public' OR ownerId = :userId

Google Datastore 根本不支持OR 过滤器的问题(只能乘以相同字段的值,IN)。

但是您可以进行两个单独的查询并将结果合并为一个。

可以直接使用低级APIQuery.CompositeFilter对象,它支持一定级别的AND和OR组合:

com.google.appengine.api.datastore.Query.Filter filter = // see docs
ofy().load().type(Thing.class).filter(filter);

以下是如何制作复合过滤器的一些示例:

https://cloud.google.com/appengine/docs/java/javadoc/com/google/appengine/api/datastore/Query.CompositeFilter