2014-02-05 35 views
0

我正在開發一個簡單的費用管理器,它將部署在Google Appengine上。我將Appejeine ORM作爲對象使用。現在問題是我無法從數據存儲獲取簡單對象。這裏的會話總是空的!但是當我在localhost數據存儲中查看它時,我可以看到它在那裏!無法使用objectify從數據存儲獲取對象

@Override 
public String findEmailBySessionId(String sid) { 
    Session session = datastore.load().type(Session.class).id(sid).now(); 
    if (session != null && (session.getDate().after(new Date()) || session.isToBeRemembered())) { 
     return session.getEmail(); 
    } // this is always null ! 
    return null; 
} 

@Entity 
public class Session { 


    private String email; 

    @Id 
    private String sessionId; 

    private Date date; 

    private boolean toBeRemembered; 

    @Parent 
    private Key<User> parent; 
......... 
} 

@Entity 
public class User { 

    @Id 
    private String email; 

    private String name; 
    private String password; 
    private Date dateOfBirth; 
    private String hashSalt; 

    public User() { 
    } 
+0

您是否檢查「sid」是否爲空? – TomTasche

+0

是的,我檢查...我使用低級API執行,它的工作...但Objectify真正優化寫和閱讀這就是爲什麼我想使用它...但它似乎不工作 – Adelin

回答

1

好吧,我已經得到了答案,這是非常愚蠢的。它其實很愚蠢。

在谷歌文檔存在,說對查詢的限制:

* 過濾對未編入索引的屬性不返回任何結果!!!! *link 爲了物化索引屬性,該屬性應該用@Index註釋進行註釋。 在上面的代碼中,我忘記了在date上放置@Index註釋!這就是問題所在。在我把註解返回之後,所有事情都恢復正常。

相關問題