簡體   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