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 回答