Android和DynamoDB。无法向表添加属性

时间:2016-11-26 15:01:57

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

我在AWS DynamoDB中创建了一个表格,我将用于我正在开发的基本问题和答案论坛,在创建表格和一些成功的测试之后我能够插入数据我决定添加一个属性用于存储问题的日期,我称之为time_stamp,但由于我未知的原因,我无法刷新表结构,我的意思是,数据仍然保存,没有错误,但没有time_stamp字段。

我尝试删除表并重新创建几次并修改time_stamp数据类型但没有成功,所以我迷路了,我希望有人可以帮助我。我认为在DynamoDB中改变表结构的唯一必要的事情就是修改Java中的映射类,但不能使它工作。

我的映射类是下一个:

import com.amazonaws.mobileconnectors.dynamodbv2.dynamodbmapper.*;

@DynamoDBTable(tableName = "community_questions")
public class CommunityQuestion {

    private long question_id;
    private String time_stamp;
    private String user_id;
    private String subject;
    private String question;

    @DynamoDBHashKey(attributeName = "question_id")
    public long getQuestionId() { return question_id; }

    public void setQuestionId(long questionId) { this.question_id = questionId; }

    @DynamoDBAttribute (attributeName = "time_stamp")
    public String geTimeStamp() {
        return time_stamp;
    }

    public void setTimeStamp(String timeStamp) {
        this.time_stamp = timeStamp;
    }

    @DynamoDBAttribute (attributeName = "user_id")
    public String getUserId() {
        return user_id;
    }

    public void setUserId(String userId) {
        this.user_id = userId;
    }

    @DynamoDBAttribute(attributeName = "subject")
    public String getSubject() {
        return subject;
    }

    public void setSubject(String subject) {
        this.subject = subject;
    }

    @DynamoDBAttribute(attributeName = "question")
    public String getQuestion() {
        return question;
    }

    public void setQuestion(String question) {
        this.question = question;
    }
}

保存所有数据时没有错误,但time_stamp不会!!

我正在使用mapper.save来保存操作。

也许我应该在AWS控制台中刷新一些东西?找不到任何东西。

请提供帮助,并提前多多感谢。

1 个答案:

答案 0 :(得分:0)

您的代码中存在拼写错误。将geTimeStamp重命名为getTimeStamp

DynamoDbMapper仅考虑具有正确"get""is"前缀的方法,然后在第二步中检查注释。由于这个原因,它没有拿到你增加的财产。

/**
 * Returns whether the method given is a getter method we should serialize /
 * deserialize to the service. The method must begin with "get" or "is",
 * have no arguments, belong to a class that declares its table, and not be
 * marked ignored.
 */
 private static boolean isRelevantGetter(Method m) {

(soure)