作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试为 AWS 实现一个简单的 java 事件处理程序 lambda。它接收 sqs 事件并应该对 dynamoDB 表进行适当的更新。
此表中的属性之一是具有 4 个已定义状态的状态字段;因此我想在 java 中使用枚举类并将其映射到该属性。
在 AWS SDK v1 下,我可以使用 @DynamoDBTypeConvertedEnum 注释。但它在 v2 中不再存在。相反,有 @DynamoDbConvertedBy() 接收转换器类引用。还有一个 EnumAttributeConverter 类应该可以很好地与它一起工作。
但由于某种原因,它不起作用。以下是我当前代码的一个片段:
@Data
@DynamoDbBean
@NoArgsConstructor
public class Task{
@Getter(onMethod_ = {@DynamoDbPartitionKey})
String id;
...
@Getter(onMethod_ = {@DynamoDbConvertedBy(EnumAttributeConverter.class)})
ExportTaskStatus status;
}
枚举如下所示:
@RequiredArgsConstructor
public enum TaskStatus {
@JsonProperty("running") PROCESSING(1),
@JsonProperty("succeeded") COMPLETED(2),
@JsonProperty("cancelled") CANCELED(3),
@JsonProperty("failed") FAILED(4);
private final int order;
}
有了这个,我在启动应用程序时遇到以下异常:
Class 'class software.amazon.awssdk.enhanced.dynamodb.internal.converter.attribute.EnumAttributeConverter' appears to have no default constructor thus cannot be used with the BeanTableSchema
最佳答案
对于来到这里的任何其他人来说,在我看来,只要从枚举中删除注释就可以正常工作,即 SDK 隐式应用提供的属性转换器。这个Github issue里面也提到了.我自己的类看起来像这样(Brand 在这里是一个枚举),并且在获取项目时枚举被转换没有任何问题。
@Value
@Builder(toBuilder = true)
@DynamoDbImmutable(builder = User.UserBuilder.class)
public class User {
@Getter(onMethod = @__({@DynamoDbPartitionKey}))
String id;
Brand brand;
...
}
关于java - 如何将 Java 枚举与 Amazon DynamoDB 和 AWS SDK v2 结合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69615058/
我是一名优秀的程序员,十分优秀!