我在DynamoDB数据库中的表上运行扫描表达式时遇到特定错误。截至目前,我的Projects表中有一个项目。此项目包含项目说明和团队成员的字符串列表。检索项目描述的信息时,我的代码会打印出项目的正确名称。但是,当尝试从同一项检索队友列表时,它表示列表是空对象引用。我似乎无法理解为什么返回的列表为空。假设已在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();
以下是在扫描表格时用作模板的Projects Class的代码。这很可能是问题的一个方面,因为正确地返回了项目描述字符串,但是teamMates列表不是。也许我不应该使用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;
}
}
最后,这是我的桌子和项目的照片,其中包含项目描述的字符串和我的TeamMates的字符串列表。我假设因为表确定teamMates是一个列表我还应该在返回teamMates时创建一个List。
http://i67.tinypic.com/2qnm58h.jpg
帮助将不胜感激。
答案 0 :(得分:0)
您需要在getTeammates()方法上方设置注释,类似于为getProjectname()方法设置注释的方法。
例如,
@DynamoDBAttribute(attributeName = "teammates")