Amazon dynamodb DynamoDB删除现有属性并添加新属性

Amazon dynamodb DynamoDB删除现有属性并添加新属性,amazon-dynamodb,dynamodb-mapper,Amazon Dynamodb,Dynamodb Mapper,我们有一个现有的DynamoDB表,它有一个非键属性“latest”。我们希望从现在起使用另一个名为“latestV2”的新项目删除此属性。将模型类中的属性替换为较新的属性是否有效,或者我们是否需要保留这两个属性,而不再设置旧的属性。 当前型号类别: @Data @Builder @NoArgsConstructor @AllArgsConstructor @DynamoDBTable(tableName = "Table1") public class Table1DAO

我们有一个现有的DynamoDB表,它有一个非键属性“latest”。我们希望从现在起使用另一个名为“latestV2”的新项目删除此属性。将模型类中的属性替换为较新的属性是否有效,或者我们是否需要保留这两个属性,而不再设置旧的属性。 当前型号类别:

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@DynamoDBTable(tableName = "Table1")
public class Table1DAO {
    @DynamoDBHashKey(attributeName = "id")
    private String id;

    @DynamoDBAttribute(attributeName = "latest")
    private Boolean latest;
}
这是否有效:

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@DynamoDBTable(tableName = "Table1")
public class Table1DAO {
    @DynamoDBHashKey(attributeName = "id")
    private String id;

    @DynamoDBAttribute(attributeName = "latestV2")
    private Boolean latest;
}
底层setters/getters setlatest()/getlatest()也应该适用于新的attributeName。问题是,当加载任何带有旧“latest”标志为true的旧项时,它是否会因为该属性不再建模而中断代码

或者我们应该在模型类中同时拥有这两个属性,并且只更改旧属性的变量名称,这样就不会像这样设置/获取:

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@DynamoDBTable(tableName = "Table1")
public class Table1DAO {
    @DynamoDBHashKey(attributeName = "id")
    private String id;

    @DynamoDBAttribute(attributeName = "latest")
    private Boolean latestold;

    @DynamoDBAttribute(attributeName = "latestV2")
    private Boolean latest;
}

是一个很好的表映射器示例。
@DynamoDBAttribute
将字段名从DynamoDB映射到java类,因此将忽略“latest”属性并使用“latestV2”。因此,要回答您的问题,您不需要同时保留这两个属性,并且修改旧属性不会影响代码,只要它没有映射到任何java类属性。

因此,在加载任何具有“latest”属性的过去数据时,它会忽略该属性?是的,对于过去的数据,“latest”属性将返回空/null