Java DDB 中复合范围键的注释

Java Annotation for composite Range Keys in DDB

我有一个 my_table,它有一个由两个组合属性 idmodel_name 组成的复合排序键(即 id_model_name,与此处所做的类似 here and 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 混淆(因为它是派生字段)。是因为缺少此字段(连同 setter 方法吗?)。我怎样才能克服这个?

我发现提供一个虚拟 setter 解决了问题:

public void setIdModelName(final String idModelName) {}