Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> тип ENUM в Hibernate, при помощи Аннотации 
V
    Опции темы
fath_fast
Дата 9.7.2008, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 189
Регистрация: 9.4.2007

Репутация: нет
Всего: нет



САБЖ! не знаю как.
Нашёл только это http://appfuse.org/display/APF/Java+5+Enum...+with+Hibernate

А есть менее громоздкий вариант? что-то вроде:
Код

 @Column(name = "st", columnDefinition="ENUM('true', 'false')")



PM MAIL   Вверх
ivg
Дата 10.7.2008, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Autonomous R&D
**


Профиль
Группа: Участник
Сообщений: 686
Регистрация: 8.2.2006
Где: Екатеринбург

Репутация: 32
Всего: 81



По моему ничего делать то и не надо. Hibernate сам с этим разбирается. Ну или я не понял в чём загвоздка.  smile
PM MAIL   Вверх
fath_fast
Дата 10.7.2008, 05:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 189
Регистрация: 9.4.2007

Репутация: нет
Всего: нет



ivg,
Цитата

Hibernate сам с этим разбирается.

Просто хотелось немного ему помочь в этом  smile 
PM MAIL   Вверх
fath_fast
Дата 10.7.2008, 06:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 189
Регистрация: 9.4.2007

Репутация: нет
Всего: нет



Кстати, не заботится об этом Hibernate сам, если вот такой аннотацией 
Код

 @Column(name = "st")

определить столбей типа ENUM, то получится ИСключение:
Код

org.hibernate.HibernateException: Wrong column type: st, expected: varchar(255)

PM MAIL   Вверх
ivg
Дата 10.7.2008, 08:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Autonomous R&D
**


Профиль
Группа: Участник
Сообщений: 686
Регистрация: 8.2.2006
Где: Екатеринбург

Репутация: 32
Всего: 81



Какойто у вас неправильный мёд © smile 
Нельзя ли поподробнее?

Это сообщение отредактировал(а) ivg - 10.7.2008, 08:49
PM MAIL   Вверх
fath_fast
Дата 10.7.2008, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 189
Регистрация: 9.4.2007

Репутация: нет
Всего: нет



ivg, поподробней?
Пожалуйста! smile
Есть в одной таблице БД (MySql) один столбец, который в принципе должен принимать только одно из двух значений true или false...
А это значит неплохо бы заюзать тип ENUM в БД... Но за незнанием способа описать свойства этого стобца при помощи аннотаций в Hiberante, приходиться обходиться обычным VARCHAR (в БД).

я предпринял попытку  подсунуть хибернэйту столбец типа ENUM,  а в аннотациях указал только  @Column(name = "st") (st - это поле в БД)... На что Hibernate тут же на меня возмутился сим исключением :
Код

org.hibernate.HibernateException: Wrong column type: st, expected: varchar(255)

Вот.
PM MAIL   Вверх
ivg
Дата 10.7.2008, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Autonomous R&D
**


Профиль
Группа: Участник
Сообщений: 686
Регистрация: 8.2.2006
Где: Екатеринбург

Репутация: 32
Всего: 81



Код

public enum Gender {
    unknown,
    male,
    female    
}

Код

@Entity
public class Person {
    
    public Person() {
        super();
    }
...
    @Column(name="gender", columnDefinition="enum('male', 'female', 'unknown')")
    @Enumerated(EnumType.STRING)
    private Gender gender;
...
    public Gender getGender() {
        return gender;
    }
    
    public void setGender(Gender gender) {
        this.gender = gender;
    }
...
}

Вот пример решения, как вы хотели. Обратите внимание, оно не переносимо и будет работать только с MySQL. Так же строка enum в значении columnDefinition должна быть в нижнем регистре, иначе валидация не проходит.
PM MAIL   Вверх
fath_fast
Дата 10.7.2008, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 189
Регистрация: 9.4.2007

Репутация: нет
Всего: нет



ivg, Большое спасибо! 
PM MAIL   Вверх
heizer
Дата 23.3.2009, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 23.3.2009

Репутация: нет
Всего: нет



можно так columnDefinition = "enum" етого хватает
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0760 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.