![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| drG100k |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 31.3.2006 Репутация: нет Всего: нет |
Здравствуйте!
Во время изучения наследования в JPA возникла такая задача... Есть 3 таблицы: 1. Parent (EntryId, Number, Description) 2. Child1(Id(FK),etc...) 3. Child2(Id(FK),etc...) Между Parent и Child[s] Связи 1:1
Так вот... Задача состоит в том чтобы поле "Number" по разному заполнялось в зависимости от типа потомка (к примеру если создаётся запись Child1, то поле Number заполняется из Sequence в Базе данных, а если Child2, то
в @Column есть свойство Insertable, но как значение этого свойства изменять в зависимости от типа потомка? Пока это писал придумал ещё одну задачку на ту же тему: Наследование на основе одной таблицы. В ней есть поле (не ключевое), которое должно автоматом заполняться, но из разных Sequence, в зависимости от DiscriminatorValue. Конечно, тут можно в родительском классе на поле поставить Insertable=false и реализовать логику заполнения через триггер в СУБД... 1. Есть ли решения такого плана с помощью JPA? 2. Как на не ключевое поле "натравить" @GeneratedValue ? Это сообщение отредактировал(а) drG100k - 7.11.2008, 22:26 |
||||
|
|||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
а что если в конструкторе Child2 сделать setNumber(1); ?
|
|||
|
||||
| drG100k |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 28 Регистрация: 31.3.2006 Репутация: нет Всего: нет |
Так это тоже самое, что я написал: хоть в конструкторе, хоть через setter всё равно придётся использовать механизмы СУБД, а именно триггер before insert. Мне же хочется переложить всё это дело на JPA к примеру
Но генераторы только на @Id действуют... или я где-то что-то недочитал... |
||||
|
|||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 28 Всего: 159 |
Применить @GeneratedValue можно только совместно с @Id, т.е. только для генерации primary ключей.
Как вариаент, можно для каждого подкласса написать callback на persist операцию (@PrePersist), который подставит нужно значение при сохранении объекта в БД. Но я не могу оценить насколько он Вам подходит... |
|||
|
||||
![]()
|
| Правила форума "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. |