我正在研究一个将在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() {
}
最佳答案
好的,我知道了答案,这很愚蠢。这实际上是非常愚蠢的。
在Google文档中,对查询的限制为:
*对未索引的属性进行过滤不会返回任何结果! * link
为了使objectify索引一个属性,该属性应使用@Index
注释进行注释。
在上面的代码中,我忘了在@cc上加上@Index注释!这就是问题所在。将注释放回原处后,一切恢复正常。
关于java - 无法使用Objectify从数据存储中获取对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21589897/