我正在开发一个简单的费用管理器,它将部署在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() {
}
答案 0 :(得分:1)
好的,我已经得到了答案而且非常愚蠢。这实际上非常愚蠢。
在Google文档中,对查询的限制是:
* 过滤未经索引的属性不会返回任何结果! * link
用于客观化索引属性,该属性应使用@Index
注释进行注释。
在上面的代码中,我忘了在date
上放置@Index注释!这就是问题所在。我把注释放回去后一切恢复正常。