2009-07-02 5 views
9

У меня есть таблица базы данных с использованием перечисления. Это уже работает с hibernate (с использованием XML), и я пытаюсь преобразовать его в аннотации, поскольку это одна из последних частей, которые все еще используют нотацию xml.MySQL enum with hibernate

Определение столбца:

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

следующих работы:

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

Это не работает:

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

аннотации стиль приводит к следующему исключению при запуске: org.hibernate.HibernateException: неправильный тип столбца в UserDTO для статус столбца. Найдено: enum, expected: varchar (255)

Есть ли какой-либо способ заставить это принять строку, как это было с помощью XML-нотации?

ответ

18

Я понял. Это должно быть:

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

Ваше решение подходит как минимум для базы данных MySQL, но не подходит для баз данных H2, используемых в тестах (например, для автоматического создания схемы). Кажется, что это не на 100% переносимо, насколько я помню, есть проблемы и с PostgresSQL (по крайней мере, если мы ожидаем, что сгенерирована схема). – kornicameister