1

ここに私のデータがあります:

ID/名前 createdTime customerName itemName 価格 数量 ステータス user_orderid id=5681726336532480 2013-10-12 05:07:47.794000 "joe" "Nexus 5" 349.00 1 "保留中" "1"

次の 2 つのクエリのいずれかを実行すると、データが得られます。
SELECT * FROM order
SELECT * FROM order ORDER BY createdTime DESC

しかし、次を実行しても何も得られません:
SELECT * FROM order WHERE status = 'pending'
SELECT * FROM order WHERE status = 'pending' ORDER BY createdTime DESC

次のようにすると結果が表示されます:
SELECT * FROM order WHERE status != 'pending'

WHERE 句が何らかの効果を発揮していることがわかります。GQL クエリで「保留中」を取得して、データストアの「保留中」と一致させることができません。

私のインデックスは次のように定義されています:
order status ▲ , createdTime ▼ Serving

レコードを削除して再度追加し、インデックスが配置された後に作成されたことを確認しました。それは助けにはなりませんでした。GQL リファレンス ページを何度も読みましたが、本当に役立つものは見つかりませんでした。stackoverflow に関するいくつかの投稿は、WHERE = 'string' を実行するための構文が正しいことを示しています。しかし、私が何をしても、Datastore Viewer またはこのクエリを実行しようとしている実際のアプリケーションのデータを返すことができません。

ここでホストされている App Engine コードラボの演習 8 を行っているときに、これに遭遇しました: http://googcloudlabs.appspot.com/codelabexercise8.html

更新:要求されたモデルは次のとおりです。

/**
 * <p>Java class for order complex type.
 * 
 * <p>The following schema fragment specifies the expected content contained within this class.
 * 
 * <pre>
 * &lt;complexType name="order">
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;sequence>
 *         &lt;element name="customer" type="{http://www.w3.org/2001/XMLSchema}string"/>
 *         &lt;element name="status" type="{http://www.w3.org/2001/XMLSchema}string"/>
 *         &lt;element name="user_orderid" type="{http://www.w3.org/2001/XMLSchema}string"/>
 *         &lt;element name="item" type="{http://www.w3.org/2001/XMLSchema}string"/>
 *         &lt;element name="quantity" type="{http://www.w3.org/2001/XMLSchema}positiveInteger"/>
 *         &lt;element name="price" type="{http://www.w3.org/2001/XMLSchema}decimal"/>
 *       &lt;/sequence>
 *       &lt;attribute name="id" type="{http://www.w3.org/2001/XMLSchema}long" />
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/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 joe Nexus 5 349.00 1 保留中 12

4

3 に答える 3

3

データ内のいくつかのフィールドが引用符で囲まれているため、クエリと一致しません。データをクリーンアップすれば、準備完了です。

于 2013-10-12T19:09:33.867 に答える
0

statusasindexed=FalseまたはTextProperty(索引付けされていないことを意味します) を設定できます。ここにモデル定義を投稿してください。質問に答える詳細が得られます。

于 2013-10-12T12:47:55.627 に答える