Java 如何从DynamoDB检索列表?

Java 如何从DynamoDB检索列表?,java,android,amazon-web-services,amazon-dynamodb,Java,Android,Amazon Web Services,Amazon Dynamodb,在DynamoDB数据库中的表上运行扫描表达式时,我遇到了一个特定的错误。到目前为止,我的项目表中有一项。此项包含项目说明和队友字符串列表。当检索项目描述的信息时,我的代码打印出项目的正确名称。但是,当试图从同一项目中检索队友列表时,它表示该列表是空对象引用。我似乎不明白为什么返回的列表是空的。假设已在IAM控制台和数据库中正确设置了所有权限 下面是我扫描表格的线程的代码 public void run() { DynamoDBScanExpression s

在DynamoDB数据库中的表上运行扫描表达式时,我遇到了一个特定的错误。到目前为止,我的项目表中有一项。此项包含项目说明和队友字符串列表。当检索项目描述的信息时,我的代码打印出项目的正确名称。但是,当试图从同一项目中检索队友列表时,它表示该列表是空对象引用。我似乎不明白为什么返回的列表是空的。假设已在IAM控制台和数据库中正确设置了所有权限

下面是我扫描表格的线程的代码

  public void run() {
                DynamoDBScanExpression scanExpression = new DynamoDBScanExpression();
  //returns a list of items from the table. each item is of Project type
                List<Project> scanResult=mapper.scan(Project.class,scanExpression);
 //for each project within scanResult do the following
                for (Project project: scanResult){
//retrieve the name of the team (this portion of the code logs the project name properly)
                    String team=project.getProjectname();
                    Log.v("team",team.toString());
//The list being returned from this one line below is null??
                    List<String> teammates=project.getTeammates();

                    Log.v("Teammate", teammates.get(0));
                }

            }

        };

        Thread mythread = new Thread(runnable);
        mythread.start();
public void run(){
DynamoDBScanExpression scanExpression=新的DynamoDBScanExpression();
//返回表中的项目列表。每个项目都属于项目类型
List scanResult=mapper.scan(Project.class,scanExpression);
//对于scanResult中的每个项目,请执行以下操作
对于(项目:scanResult){
//检索团队的名称(这部分代码正确记录项目名称)
字符串team=project.getProjectname();
Log.v(“team”,team.toString());
//从下面这一行返回的列表为空??
列出队友=project.getteamates();
Log.v(“队友”,队友.get(0));
}
}
};
线程mythread=新线程(可运行);
mythread.start();
下面是Projects类的代码,它在扫描表时充当模板。这很可能是问题所在,因为项目描述字符串被正确返回,但是团队成员列表却没有。也许我不应该使用列表,或者列表没有正确定义,或者Java注释在这个表上没有正确使用!!!!但我找不到问题所在

package com.example.varun.finalproject;
import com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.*;

import java.util.List;

/**
 * Created by Varun on 4/10/17.
 */
@DynamoDBTable(tableName = "SBUProjects")

public class Project {
private String ProjectName;
private List<String> TeamMates;
    @DynamoDBHashKey(attributeName = "ProjectName")
    public String getProjectname() {
        return ProjectName;
    }

    public void setProjectname(String projectName) {
        this.ProjectName = projectName;
    }

    public List<String> getTeammates() {
        return TeamMates;
    }

    public void setTeammates(List teammates) {
        this.TeamMates= TeamMates;
    }

    }
package com.example.varun.finalproject;
导入com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.*;
导入java.util.List;
/**
*瓦伦于2017年4月10日创建。
*/
@DynamoDBTable(tableName=“SBUProjects”)
公共类项目{
私有字符串ProjectName;
私人名单队友;
@DynamoDBHashKey(attributeName=“ProjectName”)
公共字符串getProjectname(){
返回项目名称;
}
public void setProjectname(字符串projectName){
this.ProjectName=ProjectName;
}
公共列表getTeammates(){
返回队友;
}
公共团队成员(列出团队成员){
这个。队友=队友;
}
}
最后,这是一张我的表格照片,其中包含一个项目描述字符串和一个队友字符串列表。我认为,因为表格决定了队友是一个列表,所以我还应该在返回队友时创建一个列表



非常感谢您的帮助。

您需要在getTeammates()方法上方设置注释,类似于为getProjectname()方法设置注释的方式

比如说,,
@dynamodbatAttribute(attributeName=“队友”)