Перечисление Hibernate - PullRequest
       13

Перечисление Hibernate

0 голосов
/ 01 февраля 2012

У меня есть устаревшая таблица базы данных, которая для простоты выглядит так:

  table address{
    varchar line1
    varchar line2
    varchar line3
    varchar(1) deliveryline
  }

Существует ограничение проверки на deliveryline, гарантирующее, что оно имеет значения '1,'2', or '3'.

Похоже, это хороший кандидат для перечисления в спящем режиме. У меня есть объект, который выглядит следующим образом, представляя таблицу адресов:

  public class Address{
    String line1;
    String line2;
    String line3;
    DeliveryLine deliveryLine;
  }

Я обычно использую @Enumerated(EnumType.STRING) при отображении перечислений, но эта стратегия здесь не работает. Например:

public enum DeliveryLine { 1,2,3 } Это не компилируется, так как действительные значения в базе данных (1,2,3) не являются допустимыми идентификаторами Java.

Есть ли простой способ заставить это отображение в спящем режиме?

Ответы [ 2 ]

4 голосов
/ 01 февраля 2012

Посмотрите на GenericEnumUserType, описанное на hibernate.org (в разделе «Гибкое решение»)

Если вы используете Hibernate 4, вам придется использовать модифицированную версию, как обсуждалось здесь

1 голос
/ 01 февраля 2012

Поскольку вы заблокированы в varchar для типа столбца, я думаю, что вы смотрите на пользовательский тип пользователя. Например: http://docs.jboss.org/hibernate/orm/4.0/manual/en-US/html/types.html#types-custom-ut

...