Как изменить свойства отображения гибернации во время выполнения - PullRequest
4 голосов
/ 04 января 2011

У меня есть объект, в котором я указал lazy = "false" и batch-size = "100". Это работает нормально, но в каком-то другом сценарии я хочу удалить пакетный размер и установить lazy = "true". Если я изменю hbm файлы, то это повлияет на другие приложения. Есть ли способ, которым я могу изменить свойства объекта для текущего сеанса только перед выполнением hql.

Ответы [ 3 ]

8 голосов
/ 04 января 2011

Вы можете изменить стратегию выборки (ленивая или нет) во время выполнения по HQL или критерию запроса.В HQL вы можете использовать fetch join для инициализации значений объединенной коллекции, например:

from Cat as cat
inner join fetch cat.mate
left join fetch cat.kittens

См. Hibernate Doku - 15.3.Ассоциации и объединения

Используйте Criteria.setFetchMode (..) критериев api вместо критериев запросов, например:

List cats = sess.createCriteria(Cat.class)
.add( Restrictions.like("name", "Fritz%") )
.setFetchMode("mate", FetchMode.EAGER)
.setFetchMode("kittens", FetchMode.EAGER)
.list();

Hibernate Doku для этого: 16,5.Выборка динамической ассоциации

2 голосов
/ 04 января 2011

Вы можете изменить стратегию выборки, используя Выборка профилей .

0 голосов
/ 04 января 2011

Да, вы можете.
Полная информация здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...