我们有一个现有的 DynamoDB 表,该表具有非关键属性“最新”。我们希望从现在开始使用另一个名为“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;
}
底层的 setter/getter setlatest()/getlatest() 也应该适用于新的 attributeName。问题是,当加载任何带有旧“最新”标志的旧项目为真时,由于该属性不再建模,它会破坏代码吗?
或者我们应该在 Model 类中同时拥有这两个属性,并且只更改旧属性的变量名称,以便它永远不会像这样再次设置/获取:
@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;
}