在我的DynamoDB数据库中的表上运行扫描表达式时,Im发生特定错误。截至目前,我的项目表中有一个项目。此项目包含项目说明和团队队友的列表。当检索项目描述的信息时,我的代码打印出项目的正确名称。然而,当试图从这个相同的项目检索队友列表时,它说该列表是一个空对象引用。我似乎无法理解为什么返回的列表为空。假设所有权限已在IAM控制台和数据库中正确设置。如何从DynamoDB检索列表?
下面是我的线程扫描表的代码。
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();
以下是在扫描表格时充当模板的Projects类的代码。这很可能是问题的方面,因为项目描述字符串被正确返回,但是teamMates List isnt。也许我不应该使用List,或者List没有被正确定义,或者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;
}
}
最后,这里是我的表的照片,包含了项目介绍和我的队友列表字符串的String项目。我假设,因为表确定teamMates是一个列表,我也应该在返回teamMates的时候创建一个List。
http://i67.tinypic.com/2qnm58h.jpg
帮助将不胜感激。