2010-04-02 12 views
35

Tengo un tipo de enumeración en mi modelo de Java que me gustaría asignar a una tabla en la base de datos. Estoy trabajando con Hibernate Annotations y no sé cómo hacer eso. Dado que las respuestas que busqué eran bastante antiguas, ¿me pregunto cuál es la mejor?Asignación de tipos de enumeración con Anotaciones de Hibernate

Gracias de antemano

Respuesta

62

¿Necesita algo más que el @Enumerated anotación? Por ejemplo, la siguiente enumeración:

public enum MyEnum { 
    VALUE1, VALUE2; 
} 

Podría utilizarse y anotada así:

private MyEnum myEnum; 
@Column(name="myenum") 
@Enumerated(EnumType.ORDINAL) 
public MyEnum getMyEnum() { 
    return myEnum 
} 

puede especificar cómo la enumeración debe persistir en la base de datos con la propiedad EnumType enumeración del @Enumerated anotación . EnumType.ORDINAL especifica que la enumeración se mantendrá como un valor entero. Aquí, myEnum conjunto a VALUE1 sería persistió como 0, VALUE2 como 1, etc.

La alternativa es utilizar EnumType.STRING para especificar que la enumeración se persistió usando el nombre del valor de enumeración que el campo se establece en. Por lo tanto, aplicado al ejemplo anterior, establecer el campo myEnum en MyEnum.VALUE1 persistirá como VALUE1, etc.

+0

¡Gracias! Creo que eso es exactamente lo que estaba buscando. Voy a probarlo – Thiago

+0

¿Qué puedo escribir para el campo @Id de la clase enum? – Thiago

+1

@Thiago ¿Qué? Su enumeración generalmente no es una entidad, no tiene un campo '@ Id '. ¿Puedes actualizar tu pregunta para mostrar lo que estás haciendo? –

Cuestiones relacionadas