Amazon DynamoDB mapping enums

我需要为 Amazon DynamoDB 映射一个用户类。User 对象上的属性之一是 AccountType(枚举)。我该如何处理?以下是我尝试过的枚举和代码。

public enum AccountType {
    TYPE_A,
    TYPE_B
}

-

@DynamoDBAttribute(attributeName="AccountType")   *<< THIS FAILS*
public AccountType getAccountType() {
    return accountType;
}

任何帮助将不胜感激。


答案 1

AWS 开发工具包支持将枚举转换为字符串的特殊注释 DynamoDBTypeConvertedEnum

@DynamoDBTypeConvertedEnum
@DynamoDBAttribute(attributeName="AccountType")
public AccountType getAccountType() {
    return accountType;
}

答案 2

适用于 JavaAWS 开发工具包提供的 Amazon DynamoDB 的高级 API(对象持久性模型)尚不支持,请参阅支持的数据类型enum

Amazon DynamoDB 支持以下基元数据类型和基元包装器类。

  • 字符串
  • 布尔值,布尔值
  • 字节,字节
  • 日期(作为 ISO8601 毫秒级字符串,移位为 UTC)
  • 日历(作为 ISO8601 毫秒精度字符串,移位为 UTC)
  • 长,长
  • 整数,整型
  • 双,双
  • 浮子,浮子
  • 大十进制
  • BigInteger

但是,Amazon DynamoDB 原则上支持任意数据类型,因此您可以解决该限制,请参阅使用适用于 Java 的 AWS 开发工具包对象持久性模型将任意数据映射到 Amazon DynamoDB 了解详细信息:

除了受支持的 Java 类型 [...]之外,您还可以在应用程序中使用没有直接映射到 Amazon DynamoDB 类型的类型。若要映射这些类型,必须提供一个实现,该实现将复杂类型转换为 String 的实例,反之亦然,并使用@DynamoDBMarshalling批注类型对复杂类型访问器方法进行批注。[...]


推荐