DDB中复合范围键的Java注释

问题描述 投票:0回答:1

[我有一个my_table,它带有由两个组合属性idmodel_name(即id_model_name,与此处herehere相似的内容)组成的复合排序键。

所以我创建了这个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混淆(因为它是派生字段)。是否是因为缺少此字段(以及设置方法)?我该如何克服?

java annotations amazon-dynamodb lombok
1个回答
0
投票

我发现提供一个虚拟的塞特犬解决了这个问题:

public void setIdModelName(final String idModelName) {}
© www.soinside.com 2019 - 2024. All rights reserved.