![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| iluvatar |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 266 Регистрация: 17.9.2007 Репутация: 4 Всего: 4 |
Здравствуйте.
Есть таблицы, скажем Person и PersonInfo Person
PersonInfo
Хочется, чтобы при создании и сохранении нового персона, создавалась и сохранялась новая запись personInfo. Как реализовать mapping? Т.е. я создаю экземпляр person. Говорю person.setPersonInfo(new PersonInfo()), и вызываю PersonDAO.save(person). |
||||
|
|||||
| Llucas |
|
|||
![]() J2EE Developer ![]() Профиль Группа: Участник Сообщений: 160 Регистрация: 29.11.2006 Где: Одесса Репутация: нет Всего: нет |
В mapping нужно установить - lazy = "true" Ну и конечно связать эти таблицы в меппинге.
|
|||
|
||||
| iluvatar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 266 Регистрация: 17.9.2007 Репутация: 4 Всего: 4 |
Насколько я знаю lazy влияет только на получение объекта из БД. Пишу такой меппинг: <many-to-one name="personInfo" insert="true" update="true" cascade="all" column="personInfo_id" not-null="false"/> выдает HibernateException при вызове save |
|||
|
||||
| Llucas |
|
|||
![]() J2EE Developer ![]() Профиль Группа: Участник Сообщений: 160 Регистрация: 29.11.2006 Где: Одесса Репутация: нет Всего: нет |
Попробуй cascade="save-update"
А почему связь many-to-one? Напиши trace эксепшена... |
|||
|
||||
| iluvatar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 266 Регистрация: 17.9.2007 Репутация: 4 Всего: 4 |
Хм... Теперь возникла другая проблема - генерация значения id.
Обычно есть некая sequence и у нее берется nextval. Проблема в том, что сгенерированный id должен быть результатом хранимой процедуры. Как это замепить? Чет не соображу. |
|||
|
||||
| Llucas |
|
||||
![]() J2EE Developer ![]() Профиль Группа: Участник Сообщений: 160 Регистрация: 29.11.2006 Где: Одесса Репутация: нет Всего: нет |
Аннотация для xdoclet
или *.hbm.xml
Это сообщение отредактировал(а) Llucas - 3.4.2008, 17:05 |
||||
|
|||||
| iluvatar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 266 Регистрация: 17.9.2007 Репутация: 4 Всего: 4 |
Так это просто последовательность. Т.е. при генерации нового id будет вызван blank_seq.nextval. Мне же нужно получить результат хранимой процедуры, например genMyId.
|
|||
|
||||
| Llucas |
|
|||
![]() J2EE Developer ![]() Профиль Группа: Участник Сообщений: 160 Регистрация: 29.11.2006 Где: Одесса Репутация: нет Всего: нет |
Если ты хочешь получить следующее значение sequence которое будет присвоено новой строке, то насколько мне известно, сделать это не получится, потому как nextval у sequence возвращает следующее значение id и при этом тут же инкрементирует счетчик...
|
|||
|
||||
| iluvatar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 266 Регистрация: 17.9.2007 Репутация: 4 Всего: 4 |
объясню на пальцах - есть таблица person, есть person_seq, есть хранимая процедура genPersonId.
genPersonId берет значение person_seq.nextval и умножает на 2. То есть, при создании нового перца, его id это не просто значение person_seq.nextval, а удвоенное значение. Как замепить генератор id на результат, возвращаемой хранимой функцией? P.S. Умножение id на 2 это для примера. В дествительности алгоритм намного сложней. |
|||
|
||||
| AlexeyVorotnikov |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 18.6.2007 Где: Москва Репутация: 3 Всего: 18 |
Может, написать собственный IdentifierGenerator?
-------------------- RTFM! Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification |
|||
|
||||
| iluvatar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 266 Регистрация: 17.9.2007 Репутация: 4 Всего: 4 |
не хочется дублировать алгоритм, который уже есть в БД.
|
|||
|
||||
| AlexeyVorotnikov |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 18.6.2007 Где: Москва Репутация: 3 Всего: 18 |
Так IdentifierGenerator ничего не будет дублировать, он будет просто вызывать процедуру из БД.
-------------------- RTFM! Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification |
|||
|
||||
| iluvatar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 266 Регистрация: 17.9.2007 Репутация: 4 Всего: 4 |
хочется сделать так:
А вот как в myClass получить результат хранимой функции myFunction? Это сообщение отредактировал(а) iluvatar - 9.4.2008, 10:07 |
|||
|
||||
| iluvatar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 266 Регистрация: 17.9.2007 Репутация: 4 Всего: 4 |
up
|
|||
|
||||
| AlexeyVorotnikov |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 18.6.2007 Где: Москва Репутация: 3 Всего: 18 |
Не обещаю наверняка, но, если у меня сегодня будет время, попробую накидать как оно приблизительно должно выглядеть.
-------------------- RTFM! Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification |
|||
|
||||
![]()
|
| Правила форума "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. |