Как сделать запрос диапазона дат с помощью JDO в Google App Engine - PullRequest
0 голосов
/ 10 февраля 2011

Вот фрагмент кода, который я пытаюсь заставить работать:

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

Поскольку я запрашиваю только один параметр, это должно работать в соответствии с Документами Google.

Фильтры неравенства разрешены только для одного свойства. В запросе могут использоваться фильтры неравенства (<, <=,> =,>,! =) Только для одного свойства во всех его фильтрах.Например, этот запрос разрешен:

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);

Конечно, который использует низкоуровневый интерфейс хранилища данных, но я ожидаю, что реализация JDO также использует это.

Но я получаю это бесполезное сообщение об ошибке при выполнении моего запроса.

org.datanucleus.store.appengine.query.DatastoreQuery $ UnsupportedDatastoreFeatureException: проблема с query = publishOn PARAMETERS Date startDate,Date endDate import java.util.Date>: непредвиденный тип выражения при синтаксическом анализе запроса: org.datanucleus.query.expression.ParameterExpression

Кто-нибудь знает, как выполнить запрос на расстоянии, подобный этому

1 Ответ

3 голосов
/ 10 февраля 2011

Я понял это. , .

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 семантикой!

...