Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / [hibernate] Можно ли такое замапить? / 3 сообщений из 3, страница 1 из 1
30.08.2007, 16:26:24
    #34765281
Мужик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[hibernate] Можно ли такое замапить?
Элементы типа А (Таблица А) id, prop1, prop2, ...
Элементы типа B (Таблица B) id, prop1, prop2, ...
В элементы типа А входят несколько элементов типа B (одному А могут соответствовать несколько разных или одинаковых B!).
Связь А с B (Таблица С) id, elementA, elementB

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
<class name="A">
  <id name="id" .../>
  ...
  <bag name="Bs">
    <key><column name="Aid" not-null="true"/></key>
    По идее здесь не сами элементы А, а 'Части' (B + id из таблицы C)?
    ...
    <loader query-ref="LoadBs"/> 
    <!-- Хочется вернуть не просто связь А с B, а сразу и prop1, ... от элементов B, но как? -->
  </bag>

  <loader query-ref="LoadA"/>
</class>

<class name="B">
  <id name="id" .../>
  ...
  <loader query-ref="LoadB"/>
</class>

<sql-query name="LoadBs">
  <load-collection alias="Parts" role="A.Bs"/>
  ...
</sql-query>

В иделе хочется иметь следующее:
Код: plaintext
1.
2.
3.
4.
A a = ...
B b = ...
a.getBs().add(b);
...

Вся логика в базе на процедурах, поэтому очень не хочется для загрузки коллекции Bs сначала грузить части (по сути таблицу C), а потом по одному выбирать их loader'ом B. Можно этого избежать?
Сумбурно объяснил, надеюсь кто-нибудь поймет :)
...
Рейтинг: 0 / 0
31.08.2007, 10:37:34
    #34766862
mijer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[hibernate] Можно ли такое замапить?
Если я все правильно понял, то вам нужно почитать про many-to-many
...
Рейтинг: 0 / 0
31.08.2007, 10:56:37
    #34766961
Мужик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[hibernate] Можно ли такое замапить?
Да, именно many-to-many и использую. Вообщем проблема решена. Думал у меня крыша в конце недели съехала, оказалось у Хибера ее сорвало :) При использовании nativeSQL в many-to-many, кидает NPE (что-то похожее на этот баг http://opensource.atlassian.com/projects/hibernate/browse/HHH-2745). Поправил org.hibernate.loader.custom.sql.SQLQueryReturnProcessor в
Код: plaintext
1.
2.
3.
private void addCollection(String role, String alias, Map propertyResults)
...
if ( collectionPersister.isOneToMany())

заменил на

Код: plaintext
1.
if ( collectionPersister.isOneToMany() || collectionPersister.isManyToMany())

все заработало (надолго ли? :)).
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / [hibernate] Можно ли такое замапить? / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]