Home Articles

如何从DynamoDB检索列表?

Asked
Viewed 824 times
0

我在DynamoDB数据库中的表上运行扫描表达式时遇到特定错误 . 截至目前,我的Projects表中有一个项目 . 此项目包含项目说明和队友的 list of Strings . 检索项目描述的信息时,我的代码会打印出项目的正确名称 . 但是,当尝试从同一项检索队友列表时,它表示列表是空对象引用 . 我似乎无法理解为什么返回的列表为空 . 假设已在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类的代码,它在扫描表时用作模板 . 这很可能是问题的一个方面,因为正确地返回了项目描述字符串,但是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的 List of Strings . 我假设因为表确定teamMates是一个列表我还应该在返回teamMates时创建一个List .

http://i67.tinypic.com/2qnm58h.jpg
帮助将不胜感激 .

1 Answer

  • 0

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

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

Related