Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate FetchMode / 1 сообщений из 1, страница 1 из 1
25.12.2006, 11:49:45
    #34222059
Alexey Turn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Hibernate FetchMode
<set name="kittens" lazy="true" inverse="true"
cascade="all">
<cache usage="nonstrict-read-write"/>
<key column="cat_id" />
<one-to-many class="ru.nnews.kernel.pojo.kitten.Kitten" />
</set>


Задача зафетчить котят в запросе поиска, для того, чтобы при выводе таблицы

Кошка| Список котят через запятую|
------------------------------------
Мурка| Мурзик, Зузик, Бобик |
------------------------------------

не было N - sql запросов типа select * from kittens where cat_id=?, где N - количество найденных кошек.



Код: plaintext
1.
2.
List cats = sess.createCriteria(Cat. class )
    .setFetchMode("kittens", FetchMode.JOIN)
         .list();

Ищем всех кошек.
Так все ок. Установка lazy="true" отключается и в запросе появляется OUTER JOIN.

Код: plaintext
1.
2.
List cats = sess.createCriteria(Cat. class ).createAlias("kittens",kittens).add(Restrictions.eq("color","white")).
    .setFetchMode("kittens", FetchMode.JOIN)
         .list();

Теперь ищем кошек, имеющих белого котенка.

Так FetchMode.JOIN игнорируется. Не понимаю почему. Вываливаются все sql запросы вместо одного с OUTER JOIN.

В чем причина?

P.S. В данном примере котенок не наследует кошку. Это независимые сущности, связанные отношением one-to-many.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Hibernate FetchMode / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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