2012-09-25 229 views
7

我需要映射Amazon DynamoDB的User類。 User對象的其中一個屬性是AccountType(一個枚舉)。我該如何處理?下面是枚舉和我試過的代碼。Amazon DynamoDB映射枚舉

public enum AccountType { 
    TYPE_A, 
    TYPE_B 
} 

-

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

任何幫助,將不勝感激。

+0

問題可以通過指定錯誤消息或失敗代碼來改善:記錄沒有被保留嗎?錯誤是否在構建時發生?在運行時?在特定的測試中? –

回答

11

高級別API(在對象持久模型),用於由所述提供AWS SDK for Java不支持enumAmazon DynamoDB,見Supported Data Types

亞馬遜DynamoDB支持以下原語數據類型和 原始包裝類。

  • 字符串
  • 布爾,布爾
  • 字節,字節
  • 日期(如ISO8601毫秒精度字符串,轉移到UTC)
  • 日曆(如ISO8601毫秒精度字符串,轉移到UTC )
  • 很久很久
  • 整型,詮釋
  • 雙,雙
  • 浮動,浮動
  • 的BigDecimal
  • 的BigInteger

然而,亞馬遜DynamoDB支持任意的數據類型,原則,所以你也許可以解決這個限制,請參見Mapping Arbitrary Data with Amazon DynamoDB Using the AWS SDK for Java Object Persistence Model詳細信息:

除了支持的Java類型, 您可以使用類型i n您的應用程序中沒有直接映射到Amazon DynamoDB類型的 。要映射這些類型,必須提供 提供的實現,將複雜類型轉換爲字符串的實例,反之亦然,並使用@DynamoDBMarshalling註釋類型註釋複雜類型 訪問器方法。 [...]

16

AWS SDK支持特殊標註DynamoDBTypeConvertedEnum將枚舉轉換爲字符串。

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