Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Hibernate маппинг one-to-one с условием 
:(
    Опции темы
Restavrator
Дата 4.9.2007, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 16.6.2007

Репутация: 1
Всего: 1



Всем добрый день.
Такой вопрос по hibernate:
Существует 2 объекта Parent и Child.

Child имеет в базе данных поле parent_id и поле version. 
Т.е. другими словами существуют версии этого объекта которые контролируются и выставляются при помощи тригера.
Таким образом в этой ситуации со стороны child будет маппинг many-to-one.
Возможно ли с другой стороны (со стороны Parent) сделать маппинг с условием по version? 
Т.е фактически получать только последнюю версию объекта child при помощи маппинга one-to-one?

Понимаю что эту проблему можно рещить маппингом one-to-many c условием +немного извращения, но хотелось бы сделать это красиво smile.



Это сообщение отредактировал(а) Restavrator - 4.9.2007, 13:51
PM MAIL   Вверх
lunix
Дата 4.9.2007, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 17.2.2007

Репутация: нет
Всего: нет



Маппинг Parent и Child
Код

<class name="Parent">
...
<one-to-one name="maxChild" property-ref="maxReference">
    <formula>select max(version) from Child</formula>
    <formula>PARENT_ID</formula>
</one-to-one>
...
</class>

<class name="Child">
...
<properties name="maxReference">
    <property name="version" column="VERSION" />
...
    <many-to-one name="item" class="Parent" column="PARENT_ID"/>
...
</properties>
...
</class>


Это должно привести к запросу при вызове maxChild() у Parent:

select  c.*
from
PARENT p left outer join CHILD c on select max(version) from Child = c.VERSION
and p.PARENT_ID = c.PARENT_ID
where
p.PARENT_ID = ?

Я правда не уверен, что сработает. Можешь попробывать, если поможеть скажи.


Это сообщение отредактировал(а) lunix - 4.9.2007, 18:58
PM MAIL   Вверх
Restavrator
Дата 5.9.2007, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 16
Регистрация: 16.6.2007

Репутация: 1
Всего: 1



lunix спасибо.

После более внимательного просмотра книги "Java Persistence in Hibernate" нашел, что этот вопрос более-менее подробно рассматривается
в разделе "8.1.2 Arbitrary join conditions with formulas".

Только еще небольшой вопрос: как такой маппинг будет реализован при помощи аннотаций?

Это сообщение отредактировал(а) Restavrator - 5.9.2007, 16:32
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0521 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.