DynamoDBデータベース内のテーブルでスキャン式を実行すると、特定のエラーが発生します。今のところProjectテーブルには1つのアイテムがあります。このアイテムにはプロジェクトの説明とチームメイトのの文字列リストが含まれています。プロジェクト記述の情報を取得するとき、私のコードはプロジェクトの正しい名前を出力します。しかし、同じアイテムからチームメイトのリストを取得しようとすると、そのリストはヌルオブジェクトリファレンスであると言われます。なぜ返されるリストがnullであるのかわからない。すべての権限が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();
以下は、テーブルをスキャンするときのテンプレートとして機能するプロジェクトクラスのコードです。これは、プロジェクトの説明文字列が正しく返されているため、問題の領域である可能性が高いですが、teamMatesのListはisntです。おそらく私はリストを使用することになっていない、またはリストが正しく定義されていない、または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をリストに決定したので私は推測しました。チームメイトを返すときにListを作成する必要があります。
http://i67.tinypic.com/2qnm58h.jpg
ご了承ください。