2017-04-14 52 views
0

在我的DynamoDB數據庫中的表上運行掃描表達式時,Im發生特定錯誤。截至目前,我的項目表中有一個項目。此項目包含項目說明和團隊隊友的列表。當檢索項目描述的信息時,我的代碼打印出項目的正確名稱。然而,當試圖從這個相同的項目檢索隊友列表時,它說該列表是一個空對象引用。我似乎無法理解爲什麼返回的列表爲空。假設所有權限已在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(); 

以下是在掃描表格時充當模板的Projects類的代碼。這很可能是問題的方面,因爲項目描述字符串被正確返回,但是teamMates List isnt。也許我不應該使用List,或者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; 
    } 

    } 

最後,這裏是我的表的照片,包含了項目介紹和我的隊友列表字符串的String項目。我假設,因爲表確定teamMates是一個列表,我也應該在返回teamMates的時候創建一個List。

http://i67.tinypic.com/2qnm58h.jpg
幫助將不勝感激。

回答

0

您需要在getTeammates()方法上設置註釋,類似於您爲getProjectname()方法設置它的方式。

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