0

这是我试图开始工作的代码片段:

final Query query = pm.newQuery("SELECT FROM model.Strip WHERE publishOn <= startDate
&& endDate >= publishOn PARAMETERS Date startDate, Date endDate import java.util.Date");

由于我只查询一个参数,这应该根据 Google Docs 工作。

不等式过滤器仅允许在一个属性上使用 查询只能在其所有过滤器中的一个属性上使用不等式过滤器(<、<=、>=、>、!=)。例如,允许此查询:

import com.google.appengine.api.datastore.Query;
import com.google.appengine.api.datastore.Query.FilterOperator;
import com.google.appengine.api.datastore.Query.SortDirection;

Query q = new Query("Person");
q.addFilter("birthYear", FilterOperator.GREATER_THAN_OR_EQUAL, minBirthYearParam);
q.addFilter("birthYear", FilterOperator.LESS_THAN_OR_EQUAL, maxBirthYearParam);

当然,这是使用低级 Datastore 接口,但我希望 JDO 实现也只使用它。

但是当我运行查询时,我收到了这个无用的错误消息。

org.datanucleus.store.appengine.query.DatastoreQuery$UnsupportedDatastoreFeatureException:query = publishOn PARAMETERS Date startDate,Date endDate import java.util.Date> 出现问题:解析查询时出现意外的表达式类型:org.datanucleus.query.expression.ParameterExpression

有谁知道如何进行这样的范围查询

4

1 回答 1

3

我想到了 。. .

final Query query = pm.newQuery("SELECT FROM model.Strip WHERE publishOn <= startDate
&& endDate >= publishOn PARAMETERS Date startDate, Date endDate import java.util.Date");

变成

final Query query = pm.newQuery("SELECT FROM model.Strip WHERE this.publishOn >= startDate
&& this.publishOn <= endDate PARAMETERS java.util.Date startDate, java.util.Date endDate");

你必须把属性放在变量之前,this.也没有伤害

我切换到了 Objectify,所以我不得不与这些愚蠢的JDO/JPA语义作斗争!

于 2011-02-10T06:50:14.007 回答