Hibernate Комплексный тип сохранить - PullRequest
1 голос
/ 30 апреля 2009

Мне нужно сохранить объект, одно из свойств которого - enum. Вся эта структура должна быть сохранена в одной таблице. Перечисление определяет возможные полы

public enum Gender { MALE,FEMALE }

Основной класс

public Person { String name; Gender gender; }

Если этот класс Person должен быть сохранен в одной таблице, каким должно быть отображение hbm?

1 Ответ

2 голосов
/ 30 апреля 2009

Вы не упомянули, используете ли вы Java или .Net, но я дам вам решение, которое я нашел для .Net, и вы сможете перевести его на Java, если это будет необходимо. Я нашел пост, в котором предлагается использовать универсальный тип, который позволяет объявлять перечисление как поле в таблице как текст, чтобы вы могли видеть имя значения в таблице.

Нажми меня!

Я немного изменил свой, чтобы ограничить длину столбца.

/// <summary>
/// This class allows enums to be stored as a string in the database
/// </summary>
/// <typeparam name="T">The Enum Type</typeparam>
public class EnumMapper<T> : EnumStringType
{
    /// <summary>
    /// The default constructor which defines that the maximum length of
    /// an enum string column in the datbase is 30 characters.
    /// </summary>
    public EnumMapper() : base(typeof(T), 30)
    {
    }
}

Это отлично сработало для меня несколькими способами. Если вы измените порядок элементов в перечислении, он все еще будет работать, и это также означает, что вы можете увидеть, что означает значение в БД, упрощая написание специальных запросов! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...