Как проверить, является ли текст пустым или нет с помощью JDO - PullRequest
0 голосов
/ 15 января 2012

Я пишу эти коды

Query q = pm.newQuery(User.class);
q.setFilter("textPosts != null"); // textPosts is a Text
List<User> users = (List<User>) q.execute();
resp.getWriter().println("user num: " + users.size());

И получаю

user num: 0

Я уверен, что число должно быть больше 0.
Я, вероятно, пропускаю что-то важное.
Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 15 января 2012

Запрос неиндексированных свойств :

A query with a filter or sort order on a property will never match an entity with that property unindexed

Таким образом, ваша сущность не найдена, поскольку свойства текста никогда не индексируются.

Это такжерелевантно (но в вашем случае преобладает неиндексированный текст) - сущности с несуществующими свойствами не найдены с запросами :

The App Engine datastore distinguishes between an entity without a given property and an entity with a null value for a property. JDO does not support this distinction: every field of an object has a value, possibly null.

Так что если у вас естьОбъект без свойства не будет найден в запросе, поскольку запрос требует, чтобы свойство существовало .

0 голосов
/ 15 января 2012

Возможно, потому что Text не будет проиндексирован для целей запроса , как указано в javadoc: http://code.google.com/intl/en/appengine/docs/java/javadoc/com/google/appengine/api/datastore/Text.html

Кстати, я уверен, что в этом случае должно произойти исключение.

...