web-dev-qa-db-ja.com

AmazonDynamoDBマッピング列挙型

AmazonDynamoDBのUserクラスをマッピングする必要があります。 Userオブジェクトのプロパティの1つは、AccountType(列挙型)です。これをどのように処理しますか?以下は、私が試した列挙型とコードです。

public enum AccountType {
    TYPE_A,
    TYPE_B
}

-

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

どんな助けでもいただければ幸いです。

23
user1007895

Amazon DynamoDB の高レベルAPI(Object Persistence modelAWS SDK for Java はまだenumをサポートしていません。 サポートされているデータ型 を参照してください:

Amazon DynamoDBは、次のプリミティブデータ型とプリミティブラッパークラスをサポートしています。

  • ストリング
  • ブール、ブール
  • バイト、バイト
  • 日付(ISO8601ミリ秒精度の文字列としてUTCにシフト)
  • カレンダー(ISO8601ミリ秒精度の文字列としてUTCにシフト)
  • 長い、長い
  • 整数、int
  • ダブル、ダブル
  • フロート、フロート
  • BigDecimal
  • BigInteger

ただし、Amazon DynamoDBは原則として任意のデータ型をサポートしているため、その制限を回避できる可能性があります。 Amazonを使用した任意のデータのマッピング)を参照してください。詳細については、AWS SDK for Java Object Persistence Model を使用するDynamoDB:

サポートされているJavaタイプ[...]に加えて、Amazon DynamoDBタイプへの直接マッピングがないアプリケーションでタイプを使用できます。これらのタイプをマッピングするには、以下を指定する必要があります。複合型をStringのインスタンスに、またはその逆に変換し、@ DynamoDBMarshallingアノテーションタイプを使用して複合型アクセサーメソッドにアノテーションを付ける実装。[...]

18
Steffen Opel

AWS SDKは、列挙型を文字列に変換するための特別なアノテーション DynamoDBTypeConvertedEnum をサポートしています。

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