Будьте в спящем режиме - как отобразить EnumSet

У меня есть цветное перечисление

public enum color { GREEN, WHITE, RED } 

и у меня есть MyEntity, который содержит его.

public class MyEntity {
   private Set<Color> colors;
   ...

У меня уже есть UserType для отображения моих Перечислений.
Вы знаете, как отобразить ряд Перечислений в Быть в спящем режиме hbm.xml?
Мне нужен UserType или существует самый легкий путь?
Спасибо

править: Только для комментирования я ищу конфигурацию hbm.xml не @CollectionOfElements Аннотация

7
задан Pascal Thivent 2 May 2010 в 17:07
поделиться

2 ответа

Я использую решение из потока EnumSet mapping , который полагается на использование . Вам просто нужна таблица с идентификатором и строкой для сопоставления коллекции (здесь MYENTITY_COLOR ).И отображение выглядит следующим образом ( EnumUserType - это тот из Java 5 EnumUserType ):

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <typedef name="color" class="com.stackoverflow.q2402869.EnumUserType">
        <param name="enumClassName">com.stackoverflow.q2402869.Color</param>
    </typedef>
    <class name="com.stackoverflow.q2402869.MyEntity" entity-name="MyEntity" table="MYENTITY">
        <id name="id" type="java.lang.Long">
            <column name="ID" />
            <generator class="assigned" />
        </id>
        <set name="colors" table="MYENTITY_COLORS">
            <key column="ID" not-null="true"/>
            <element type="color" column="COLOR"/>
        </set>
    </class>
</hibernate-mapping>

Запрос может выглядеть так:

select distinct e from MyEntity e join e.colors colors where colors IN ('WHITE', 'GREEN')

Все решение работает хорошо для загрузок, сохранений и запросов (кредиты jasonab).

7
ответ дан 7 December 2019 в 03:14
поделиться

Похоже, вам нужно использовать аннотацию @CollectionOfElements. Документация находится по адресу http://docs.jboss.org/hibernate/stable/annotations/reference/en/html_single/#entity-hibspec-collection-extratype, глава '2.4.6.2.5. Коллекция элементов или составных элементов". Пример также отображает набор Enum.

2
ответ дан 7 December 2019 в 03:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: