2009-07-02 16 views
9

Tengo una tabla de base de datos usando una enumeración. Esto ya está funcionando con hibernate (usando XML), y estoy tratando de convertirlo en anotaciones, ya que esta es una de las últimas piezas que todavía se está utilizando la notación xml.MySQL enum con hibernación

La definición de columna:

enum('Active','Pending','Cancelled','Suspend') 

las siguientes obras:

<property 
    name="status" 
    column="STATUS" 
    type="string" 
    not-null="true" /> 

Esto no funciona:

@Column(name = "status") 
public String status; 

El estilo de anotación conduce a la siguiente excepción en el arranque: org.hibernate.HibernateException: tipo de columna incorrecta en UserDTO para colum n estado. Encontrado: enum, esperado: varchar (255)

¿Hay alguna manera de forzar esto a aceptar una cadena como lo hizo usando la notación XML?

Respuesta

18

Me di cuenta. Debería ser:

@Column(name="status", columnDefinition="enum('Active','Pending','Cancelled','Suspend')") 
public String status; 
+0

su solución es correcta al menos para la base de datos MySQL, pero falla para las bases de datos H2 utilizadas en las pruebas, por ejemplo (caso de creación de esquema automático). Parece que no es 100% portátil, por lo que recuerdo, también hay problemas en PostgresSQL (al menos si esperamos que el esquema se autogenere). – kornicameister