JPA-ссылка на всё сразу.
Вопрос появился. Есть сущность JPA (Entity Bean). Например, Item. У нее есть ссылка на тип, пускай будет называться Type. При этом этот тип – может быть одной из нескольких сущностей (Тип1, Тип2, Тип3…). То есть как-то так:
Item
Type
Type <-
Type1
Type2
Type3
Type4
…
Изменять Типы нельзя. У них есть некие Id (все long), которые нужно использовать. Также типы сильно разные, и ну совсем не хочется их сливать в одну таблицу. В некоторых местах это просто невозможно.
Хочется (в идеале, если получится):
- Получить удобную схему БД.
- Возможность использовать поля типов в JPQL-запросах.
Есть решения (в той или иной мере удовлетворяющие, или не удовлетворяющие совсем):
- Сделать все типы в одной таблице. Иногда это невозможно, но если – то да. (Хотя триггеры если понавесить на всё подряд – можно, СУБД – оракля)
- Сделать View (СУБД – все ещё оракля)
- Сделать просто Type лонгом, а конкретный тип выдирать методами. Минус – к черту летит возможность использования в JPQL.
- Сделать много полей (по числу возможных типов), каждое своего типа. Запросы использовать можно, но они превращаются в что-то жуткое.
Собственно, вопрос. Были ли какие-то такого рода задачи у вас? Как их решали? Как их рекомендуется решать (может, есть какое-то теоретическое решение в реляционной алгебре)? Во что можно въехать (пока остановились на создании View, если получится)?
Спасибо.
Item
Type
Type <-
Type1
Type2
Type3
Type4
…
Изменять Типы нельзя. У них есть некие Id (все long), которые нужно использовать. Также типы сильно разные, и ну совсем не хочется их сливать в одну таблицу. В некоторых местах это просто невозможно.
Хочется (в идеале, если получится):
- Получить удобную схему БД.
- Возможность использовать поля типов в JPQL-запросах.
Есть решения (в той или иной мере удовлетворяющие, или не удовлетворяющие совсем):
- Сделать все типы в одной таблице. Иногда это невозможно, но если – то да. (Хотя триггеры если понавесить на всё подряд – можно, СУБД – оракля)
- Сделать View (СУБД – все ещё оракля)
- Сделать просто Type лонгом, а конкретный тип выдирать методами. Минус – к черту летит возможность использования в JPQL.
- Сделать много полей (по числу возможных типов), каждое своего типа. Запросы использовать можно, но они превращаются в что-то жуткое.
Собственно, вопрос. Были ли какие-то такого рода задачи у вас? Как их решали? Как их рекомендуется решать (может, есть какое-то теоретическое решение в реляционной алгебре)? Во что можно въехать (пока остановились на создании View, если получится)?
Спасибо.
