【发布时间】:2022-02-06 08:36:24
【问题描述】:
我有一个名为 Customer 的类,里面有两个具有相同对象的字段。
@Value
@Builder
@DynamoDbImmutable(builder = Customer.CustomerBuilder.class)
public class Customer {
@Getter(onMethod_ = @DynamoDbPartitionKey)
String id;
@Getter(onMethod_ = {@DynamoDbFlatten,
@DynamoDbAttribute("phone")})
Phone phone;
@Getter(onMethod_ = {@DynamoDbFlatten,
@DynamoDbAttribute("HomePhone")})
Phone homePhone;
电话结构
@Value
@Builder
@DynamoDbImmutable(builder = Phone.PhoneBuilder.class)
public class Phone {
String number;
....
当我将项目放入 DynamoDB 表时,它会显示
Caused by: java.lang.IllegalArgumentException: Attempt to add an attribute to a mapper that already has one with the same name. [Attribute name: number]
at software.amazon.awssdk.enhanced.dynamodb.mapper.StaticImmutableTableSchema.lambda$null$2(StaticImmutableTableSchema.java:184)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
at java.base/java.util.Collections$UnmodifiableCollection.forEach(Collections.java:1085)
at software.amazon.awssdk.enhanced.dynamodb.mapper.StaticImmutableTableSchema.lambda$new$3(StaticImmutableTableSchema.java:181)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1541)
at software.amazon.awssdk.enhanced.dynamodb.mapper.StaticImmutableTableSchema.<init>(StaticImmutableTableSchema.java:179)
at software.amazon.awssdk.enhanced.dynamodb.mapper.StaticImmutableTableSchema.<init>(StaticImmutableTableSchema.java:77)
我应该如何存储它,尝试为字段指定不同的名称,例如通过 DynamoDbAttribute,但没有太大帮助
【问题讨论】:
-
我认为
String id;两次只是一个错字,否则这将不是有效的 Java 代码。 -
是的,你是对的,我在玩
标签: java amazon-web-services amazon-dynamodb