无法使用objectify从数据存储区获取对象

时间:2014-02-05 22:25:24

标签: java google-app-engine google-cloud-datastore objectify

我正在开发一个简单的费用管理器,它将部署在google appengine上。我使用objectify作为Appengine ORM。现在的问题是我无法从数据存储区获取一个简单的对象。这里的会话总是空的!!但是当我在localhost数据存储区中查看它时,我可以看到它在那里!

@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() {
    }

1 个答案:

答案 0 :(得分:1)

好的,我已经得到了答案而且非常愚蠢。这实际上非常愚蠢。

在Google文档中,对查询的限制是:

* 过滤未经索引的属性不会返回任何结果! * link 用于客观化索引属性,该属性应使用@Index注释进行注释。 在上面的代码中,我忘了在date上放置@Index注释!这就是问题所在。我把注释放回去后一切恢复正常。