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