Hibernate 'tableless' enum mapping? - PullRequest
       9

Hibernate 'tableless' enum mapping?

0 голосов
/ 06 августа 2009

Я имею дело со следующим сценарием:

Мы используем наследование таблиц на подклассы , то есть первичные ключи конкретных таблиц являются ссылками на внешние ключи в таблице abstract . Суперкласс - Продукт , подклассы - Книга , DVD , AudioCD , ...

Теперь в суперклассе Java, скажем, Product.java, у нас есть enum типов продуктов: книга, DVD, музыка и т. Д.

У нас нет абстрактного столбца в абстрактной таблице и нет дополнительной таблицы для типов.

Можно ли сопоставить тип enum в Product.java с правильными значениями, в зависимости от конкретного объекта? Или необходим дискриминатор или дополнительная таблица?

... ....

Таблица для каждого подкласса: отрывок отображения наследования:

 <class name="Product" table="PRODUCT">
    <id name="id" column="IDPRODUCT" type="int">
        <generator class="native" />
    </id>
    ...

    <joined-subclass name="Book" table="BOOK">
        <key column="IDPRODUCT" />

        <property ...

    </joined-subclass>
 ...

... ...

Product.java

public class Product {

    public enum Type { book, dvd, music }

    ...

    private Type type;

    ...

Звучит странно? Может быть. Две отдельные стороны разработали часть OO и часть DB ...

1 Ответ

4 голосов
/ 06 августа 2009

Возможно, я что-то упускаю, но зачем вам вообще поле Type? Сделайте getType() абстрактным в Product и внедрите его в подклассы, чтобы получить соответствующее значение.

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