2012-10-13 33 views
4

我試圖做一個簡單的JUnit測試做這樣的查詢:物化4過濾器不工作

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查詢(這是一個長類型)我得到結果。當我堅持我想要的實體 查詢我記錄的@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

回答

10

檢查您是否在該字段上有一個@Index如果您嘗試按字段選擇沒有索引,那麼即使它在那裏也會得到空值。 在幾個領域,當然你需要索引所有的領域。

*多個字段的索引將被放置在數據存儲區,indexes.xml https://cloud.google.com/appengine/docs/java/config/indexconfig

+0

你知道,如果它應該在開發工作? Addin'@ Index'對我沒有幫助:( – expert

+0

不要忘了你可以在「datastore-indexes.xml」文件中有多個索引,具體取決於你正在查詢的數據(對大多數nosql數據庫來說它是一樣的)! –