[我有一个my_table
,它带有由两个组合属性id
和model_name
(即id_model_name
,与此处here和here相似的内容)组成的复合排序键。
所以我创建了这个Java模型:
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@DynamoDBTable(tableName = "my_table")
public class TableModel {
private static final String COMPOSITE_KEY_SEPARATOR = "_";
@DynamoDBAttribute(attributeName = "id")
private String id;
@DynamoDBAttribute(attributeName = "model_name")
private String modelName;
@DynamoDBRangeKey(attributeName = "id_model_name")
public String getIdModelName() {
return String.format("%s%s%s", id, COMPOSITE_KEY_SEPARATOR, modelName);
}
// more stuff...
}
但是我得到了:
DynamoDBMappingException: DRTFacet[id_model_name]; could not unconvert attribute
[请注意,没有String idModelName
字段,因为它可能会与@AllArgsConstructor
和@Builder
混淆(因为它是派生字段)。是否是因为缺少此字段(以及设置方法)?我该如何克服?
我发现提供一个虚拟的塞特犬解决了这个问题:
public void setIdModelName(final String idModelName) {}