4

次のようなクエリを実行するための簡単な JUnit テストを実行しようとしています。

Resource result = ofy().load().type(Resource.class).filter("raw =", 
    "/Bob/-/userId/-/").first().get(); 
if (result != null){
    System.out.println("Resulting Resource raw =" + result.getRaw());
} 

上記のクエリの結果は になりnullますが、id (Long 型) を使用してクエリを実行すると、結果が得られます。クエリしようとしているエンティティを永続化する@Idと、ログに記録され、値は1であるため、次を使用してクエリを実行しidました。

Resource result = 
    ofy().load().type(Resource.class).filter("id =", 1).first().get(); 
if (result != null){
    System.out.println("Resulting Resource raw =" + result.getRaw());
}

結果result.getRaw()/Bob/-/userId/-/本当に奇妙です。私の最初のクエリから、結果はそうではなかったはずnullです?

4

1 に答える 1

10

そのフィールドに @Index があるかどうかを確認します。インデックスを持たないフィールドで選択しようとすると、そこにある場合でも null になります。もちろん、いくつかのフィールドでは、それらすべてにインデックスが必要です。

*複数フィールドのインデックスは datastore-indexes.xml に配置されますhttps://cloud.google.com/appengine/docs/java/config/indexconfig

于 2012-10-15T10:07:44.280 に答える