Вот мои данные:GAE Datastore просмотра с помощью GQL WHERE запроса для строки, кажется, не работает
ID/Имя createdTime CUSTOMERNAME ITEMNAME Статус количество цена user_orderid ID = 5681726336532480 2013-10-12 05:07: 47.794000 "джо" "Nexus 5" 349,00 1 "до" "1"
Запуск любого из этих двух запросов дает мне данные:
SELECT * FROM порядка
SELECT * FROM порядка ORDER BY createdTime DESC
Но запуск обязанный не дает мне ничего:
SELECT * FROM порядка WHERE статус = 'в ожидании'
SELECT * FROM порядка WHERE статус = 'в ожидании' ORDER BY createdTime DESC
Я вижу результаты при выполнении следующего:
SELECT * FROM order WHERE status! = 'pending'
Так что я знаю, что предложение WHERE оказывает некоторое влияние. Я просто не могу получить «ожидание» в запросе GQL, чтобы он соответствовал «ожидающему» в хранилище данных.
Мой индекс определяется как так:
Статус заказа ▲, ▼ createdTime сервировки
Я удалил запись и заново добавить его, чтобы убедиться, что она была создана после того, как индекс был на месте. Это не помогло. Я снова и снова читал справочную страницу GQL, но не нашел ничего полезного. Некоторые сообщения в stackoverflow указали, что мой синтаксис для выполнения WHERE = 'string' верен. Но независимо от того, что я делаю, я не могу заставить это возвращать данные для Datastore Viewer или моего реального приложения, которое пытается запустить этот запрос.
Я столкнулся с этим, делая App код двигателя лаборатории Упражнение 8 размещенных здесь: http://googcloudlabs.appspot.com/codelabexercise8.html
Update: Вот модель в соответствии с просьбой:
/**
* <p>Java class for order complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* <complexType name="order">
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element name="customer" type="{http://www.w3.org/2001/XMLSchema}string"/>
* <element name="status" type="{http://www.w3.org/2001/XMLSchema}string"/>
* <element name="user_orderid" type="{http://www.w3.org/2001/XMLSchema}string"/>
* <element name="item" type="{http://www.w3.org/2001/XMLSchema}string"/>
* <element name="quantity" type="{http://www.w3.org/2001/XMLSchema}positiveInteger"/>
* <element name="price" type="{http://www.w3.org/2001/XMLSchema}decimal"/>
* </sequence>
* <attribute name="id" type="{http://www.w3.org/2001/XMLSchema}long" />
* </restriction>
* </complexContent>
* </complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "order", propOrder = {
"customer",
"status",
"userOrderid",
"item",
"quantity",
"price"
})
public class Order {
@XmlElement(required = true)
protected String customer;
@XmlElement(required = true)
protected String status;
@XmlElement(name = "user_orderid", required = true)
protected String userOrderid;
@XmlElement(required = true)
protected String item;
@XmlElement(required = true)
protected BigInteger quantity;
@XmlElement(required = true)
protected BigDecimal price;
@XmlAttribute
protected Long id;
... getters and setters ...
Здесь индекс базы данных:
<datastore-indexes>
<datastore-index kind="order" ancestor="false" source="auto">
<property name="status" direction="asc"/>
<property name="createdTime" direction="desc"/>
</datastore-index>
</datastore-indexes>
Обновление: Исправлено. Данные должны выглядеть так, а не то, что я написал выше.
ID/Имя createdTime CUSTOMERNAME ITEMNAME статус количество цена user_orderid
ID = 5760616295825408 2013-10-12 19: 25: 13,098000 джо Nexus 5 349.00 1 ожидающий 12
Если ваш синтаксис был неправильным, вероятно, вы получите сообщения об ошибках. У вас есть? Как вы создали запись? Не могли бы вы показать нам свою модель/структуру данных? – Bugs
Нет ошибки, просто пустой набор результатов, когда кажется, что результаты должны быть возвращены. – Splaktar
«Нет пустых пространств имен». это то, что возвращает Datastore Viewer. – Splaktar