2009-07-02 13 views
9

Ho una tabella di database usando un enum. Questo funziona già con l'ibernazione (usando XML), e sto provando a convertirlo in annotazioni poiché questo è uno degli ultimi pezzi che ancora usano la notazione xml.MySQL enum con hibernate

La definizione di colonna:

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

le seguenti opere:

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

Questo non funziona:

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

Lo stile di annotazione porta alla seguente eccezione all'avvio: org.hibernate.HibernateException: tipo di colonna errato in UserDTO per colum n stato. Trovato: enum, atteso: varchar (255)

Esiste un modo per forzare questo ad accettare una stringa come ha fatto con la notazione XML?

risposta

18

L'ho capito. Dovrebbe essere:

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

la soluzione è corretta almeno per il database MySQL, ma non riesce per i database H2 utilizzati nei test per esempio (caso per la creazione automatica dello schema). Sembra che non sia portatile al 100%, per quanto ricordo ci sono problemi anche su PostgresSQL (almeno se prevediamo che lo schema sia stato generato automaticamente). – kornicameister