2013-05-18 71 views
0

我無法使用Objectify可靠地獲取我的保存的實體。無法使用objectify獲取保存的實體

它看起來像緩存已損壞。奇怪的是 - 我可以通過管理控制檯數據存儲查看器正確查看保存的實體。我還編寫了一個小程序來查看使用RemoteApi的實體,我可以正確地看到保存的值。

當我查詢實體先後使用servlet或雲終端REST API - 我的連續查詢被賦予不同的結果,它看起來像在數據存儲/緩存的東西是越來越損壞。

我的實體看起來像這樣。

class ContentEntity { 
    @Id Long id; 
    String html; 
    @Index String tag; 
    boolean publish; 
} 

我把它保存爲這樣。

ContentEntity entity = ofy().load.type(ContentEntity.class) 
    .filter("tag", "my tag").first().get(); 

if (null == entity) 
    entity = new ContentEntity(); 

entity.html = "my html"; 
entity.tag = "my tag"; 
entity.publish = true; 

ofy().save.entity(entity).now(); 

我這樣檢索它。

ContentEntity entity = ofy().load().type(ContentEntity.class). 
      filter("tag", "my tag").first().get(); 

會發生什麼情況如下: - 使用 「值2」
3) -

1)讓ContentEntity.html的初值爲 「值1」
2)保存新值管理控制檯數據存儲區查看器我可以看到「值2」被正確保存。 (使用遠程API也可以看到「值2」)
3)使用上面粘貼的檢索代碼通過servlet或rest api查看實體。我看到「值2」
4)通過servlet或rest api再次查看實體。我看到「值1」
5)再次查看。我看「值2」
它不斷切換「值1」和「值2」

它的所有工作在我的開發環境很好,但不是在AppEngine上之間。

看起來像我做錯了事,沒有正確處理最終的一致性。我總是希望得到一致的結果。如果我的查詢速度稍慢,我不介意。我該怎麼辦 ?

任何提示/建議/幫助將不勝感激。

問候,

沙迪亞

回答

1

原來,這是因爲我忘了在web.xml中添加對象化過濾器在Objectify wiki page

提到我加入我的web.xml中有以下和問題解決了。

<filter> 
    <filter-name>ObjectifyFilter</filter-name> 
    <filter-class>com.googlecode.objectify.ObjectifyFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>ObjectifyFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

問候,

沙迪亞

相關問題