![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| MaxPayneC |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 18.2.2006 Репутация: 3 Всего: 9 |
В базе имеются две таблицы, users и employers. Во второй есть поле, являющееся внешним ключом на основной ключ первой. В бизнес-логике приложения однако User должен быть абстрактным классом, а Employer должен от него наследоваться. Возникает вопрос - как это сделать с помощью аннотаций?
Пробовал варианты
Работоспособности добиться не удалось :( Пробовал также делать с @SecondaryTable (в комментариях видны оверрайды полей для этой аннотации) - тоже не работает. Как реализовать наследование, описанное в первом параграфе? |
|||
|
||||
| MaxPayneC |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 18.2.2006 Репутация: 3 Всего: 9 |
Погуглив, выяснил, что вторичные таблицы, где основная таблица хранит ссылку на вторичную, а не наоборот, не поддерживаются. В связи с этим возникает вопрос - как лучше всего сделать? Пока что моя лучшая идея - это все же пометить сделать класс User аннотацией @Entity, убрать его абстрактность, и сделать его package local. Какие недостатки у этого подхода, и нет ли у кого лучших идей? И еще небольшой вопрос, в силу логики приложения, у потомков класса User не потребуется менять UserRole, т.е. сеттер на него нам не нужен, но хибернейт настоятельно просит его дать. Как лучше всего выйти из этой ситуации?
|
|||
|
||||
| Joss |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 19.3.2006 Репутация: нет Всего: 1 |
А почему User помечен как MappedSuperclass и в тоже время для него указана таблица. MappedSuperclass по определению не мапится ни на какую таблицу, и служит только как суперкласс для Entities, содержащий общее состояние или поведение. Если могут существовать сущности типа User, то класс следует сделать Entity.
|
|||
|
||||
| MaxPayneC |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 18.2.2006 Репутация: 3 Всего: 9 |
Без указания таблицы я тоже пробовал.
|
|||
|
||||
| Joss |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 19.3.2006 Репутация: нет Всего: 1 |
Ну тогда и никакого Inheritance указывать тоже не нужно было...
|
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |