DynamoDB 删除现有属性并添加新属性
DynamoDB remove an existing attribute and add new attribute
我们现有的 DynamoDB table 具有非键属性“最新”。我们希望从现在开始使用另一个名为“latestV2”的新项目删除此属性。只是将模型 class 中的属性替换为较新的一项工作,还是我们需要同时保留它们而不是再设置旧的。
当前型号 Class :
@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。问题是,在加载任何带有旧“最新”标志的旧项目时,它是否会破坏代码,因为该属性不再建模?
或者我们是否应该在模型 class 中同时拥有这两个属性,并且只更改旧属性的变量名称,这样它就再也不会像这样 set/get 了:
@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;
}
Here 是 table 映射器的一个很好的例子。 @DynamoDBAttribute
将字段名称从 DynamoDB 映射到 java class,因此将忽略“latest”属性并使用“latestV2”。因此,要回答您的问题,您不需要同时保留这两个属性,并且修改旧属性不会影响您的代码,只要它未映射到任何 java class 属性即可。
我们现有的 DynamoDB table 具有非键属性“最新”。我们希望从现在开始使用另一个名为“latestV2”的新项目删除此属性。只是将模型 class 中的属性替换为较新的一项工作,还是我们需要同时保留它们而不是再设置旧的。 当前型号 Class :
@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。问题是,在加载任何带有旧“最新”标志的旧项目时,它是否会破坏代码,因为该属性不再建模?
或者我们是否应该在模型 class 中同时拥有这两个属性,并且只更改旧属性的变量名称,这样它就再也不会像这样 set/get 了:
@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;
}
Here 是 table 映射器的一个很好的例子。 @DynamoDBAttribute
将字段名称从 DynamoDB 映射到 java class,因此将忽略“latest”属性并使用“latestV2”。因此,要回答您的问题,您不需要同时保留这两个属性,并且修改旧属性不会影响您的代码,只要它未映射到任何 java class 属性即可。