繁体   English   中英

数据存储区查询返回null

[英]Datastore Query returns null

我正在尝试从“用户”类型的数据存储实体中检索球员得分的排序列表:

 List<User> entities = ofy().load().type(User.class).order("-score").list();

知道我索引了“得分”属性。 这是“ User.class”

@Id String userName;
     String password;
    @Index int score;

实体似乎为空,我无法获取实体详细信息。我缺少什么????

我仍在努力设法将方法修改为:

 @Override
  public User display(){
     List<User> list = ofy().load().type(User.class).order("-score").limit(5).list();
     User u= list.get(list.size()-1);
      if(!u.getUserName().equals(null))  
        return  u;
      return null;
  }

通过检查用户名字段,我设法摆脱了“空”值,但是无论我如何更改list.get(index),返回值始终是实体中的第一个用户。我尝试使用不同的index值,但始终收到第一个用户,无法检索其他用户。 希望得到可以解决问题的答案。

实体存储在数据库中,如下所示:

public User registerAccount(String username, String password,String confirm) {
        User user = ofy().load().type(User.class).id(username).get();



        if(user == null){
            if(password.contains(" "))          
                return null;            
            if(password.compareTo(confirm)!=0)
                return null;

            else{
            user = new User(username,password,0);
            ofy().save().entity(user).now();
            return user;
            }
         }

        else
        {
            return null;
        }
  } 

那么使用ofy()。save()...而不是datastore.put()...有什么问题吗?我想知道是否会因为在数据存储区索引中找不到分数而影响这一点。

一个可能的原因是,从一开始就没有在“ score”属性上使用@Index注释。 .order(“-score”)命令无法提取在更新之前添加的用户。

另一个可能的事情是琐碎的,但却很常见! 这是您的类命名(“用户”)。 您输入正确吗? GAE还具有用于认证的通用类com.google.appengine.api.users.User。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM