2012-09-25 7 views
7

Necesito asignar una clase de usuario para Amazon DynamoDB. Una de las propiedades en el objeto Usuario es AccountType (una enumeración). ¿Cómo manejo esto? A continuación está la enumeración y el código que he intentado.Enumeración de mapas de Amazon DynamoDB

public enum AccountType { 
    TYPE_A, 
    TYPE_B 
} 

-

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

Cualquier ayuda se agradece.

+0

La pregunta podría mejorarse especificando el mensaje de error o la codificación de falla: ¿No se conserva el registro? ¿El error ocurre en el tiempo de compilación? ¿En tiempo de ejecución? Durante una prueba específica? –

Respuesta

11

La API de alto nivel (el Object modelo de persistencia) para Amazon DynamoDB proporcionada por el AWS SDK for Java no soporta enum todavía, ver Supported Data Types:

Amazon DynamoDB admite los siguientes tipos de datos simples y primitiva clases de envoltura.

  • cadena
  • de Boole, boolean
  • Byte, byte
  • Fecha (como ISO8601 cadena milisegundos precisión, se desplazó a UTC)
  • Calendario (como ISO8601 cadena milisegundos precisión, se desplazó a UTC)
  • largo, largo
  • entero, int
  • doble, doble
  • , flotador
  • BigDecimal
  • BigInteger

Sin embargo, Amazon DynamoDB es compatible con los tipos de datos arbitrarios, en principio, por lo que podría ser capaz de evitar esta limitación, consulte Mapping Arbitrary Data with Amazon DynamoDB Using the AWS SDK for Java Object Persistence Model para más detalles :

Además de los tipos admitidos de Java [...] , puede usar tipos i n su aplicación para la que no existe una asignación directa de a los tipos de Amazon DynamoDB. Para correlacionar estos tipos, debe proporcionar una implementación que convierta su tipo complejo en una instancia de de Cadena y viceversa y anotar el método de acceso de tipo complejo utilizando el tipo de anotación @DynamoDBMarshalling. [...]

16

AWS SDK admite la anotación especial DynamoDBTypeConvertedEnum para convertir una enumeración en una cadena.

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