1

私は持っている

public class QuantityType {
    @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
    private Key key;

    @Persistent
    private String type;
}

キーによって適切な QuantityType を取得するクエリをセットアップしようとしています

gql = "select * from QuantityType where __key__='aght52oobW1hIHTWVzc2FnZRiyAQw'";

しかし、それは機能していません

BadFilterError: BadFilterError: 無効なフィルター:キーフィルター値はキーでなければなりません。aght52oobW1hIHTWVzc2FnZRiyAQw (str) を受け取りました。

私も使ってみました

gql = "select * from QuantityType where __key__=='" + KeyFactory.stringToKey(qTypeKey)+"'";

しかし、それは機能していません..

キーを使用してデータストアから特定のオブジェクトを取得するにはどうすればよいですか?

4

1 に答える 1

2

まず、GQL 文字列を手動で作成しないでください。これはインジェクションの脆弱性につながります。代わりに、ここに記載されているように、パラメーターを宣言して渡します。

ただし、エンティティをキーで取得するには、クエリを実行する必要はまったくありません。ここに記載されているように、getObjectById を使用します。これは、クエリを使用するよりもはるかに高速です。

于 2010-05-24T01:29:45.313 に答える