2016-02-14 49 views
0

需要一些關於AmazonDynamoDB(NoSQL)的幫助,但我認爲它與AmazonDynamoDB的一般錯誤無關。DynamoDB NoSQL和實例化類的新實例失敗

下面是一個類,使用DB,talbe name = table,並有2列PhraseID(整數,鍵列)和短語(字符串)。

@DynamoDBTable(tableName = "table") 
    public class Phrase { 
    private Integer PhraseID; 
    private String phrase; 

    @DynamoDBHashKey(attributeName = "phraseID") 
    public Integer getID() 
    { return PhraseID; } 

    public void setID(Integer PhraseID) { 
     this.PhraseID = PhraseID;} 

    @DynamoDBAttribute(attributeName = "phrase") 
    public String getPhrase() 
    { return phrase;  } 

    public void setPhrase(String phrase) 
    { this.phrase = phrase;  } 

} 

我沒有問題寫/更新此表與mapper.save(短語)通過phrase.setID等但不讀取/加載。我將這個readDB稱爲:new readDB()。execute(「」);

private class readDB extends AsyncTask<String, Void, String> { 
    @Override 
    protected String doInBackground(String... params) 
    { 

     AmazonDynamoDBClient ddbClient = new   AmazonDynamoDBClient(credentialsProvider); //sdk-ddb 
     DynamoDBMapper mapper = new DynamoDBMapper(ddbClient); 
     Phrase phrase = new Phrase(); 
     int a=1; 
     mapper.load(Phrase.class, a); //want to load a phrase from db with phraseID=1 
     return "Executed"; 
    } 
} 

因此,進出口得到錯誤:「com.amazonaws.services.dynamodb.datamodeling.DynamoDBMappingException:無法實例新的類實例」和一個更低於「主要活動句話已經沒有無參數的構造「

使用谷歌搜索這個錯誤給了我一個答案,我」需要創建一個默認構造函數來解決這個異常「,但我真的不明白到底需要在代碼中做什麼/更改。 謝謝!

回答

1

我遇到了同樣的問題。 DynamoDBMapper在嘗試爲編組而訪問表時創建類的新實例。 嘗試爲你的類寫一個構造函數。 爲我工作

0

每個表類必須是操作每個表類的父類中的子類。

+1

對不起,上述方法在技術上並不是解決方案。 我可以解決每個表類是靜態類時的問題。 –