如何从DynamoDB检索列表?

时间:2017-04-14 15:22:59

标签: java android amazon-web-services amazon-dynamodb

我在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
帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

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

例如, @DynamoDBAttribute(attributeName = "teammates")