Спящий странный странный Алиас Бахавур - PullRequest
0 голосов
/ 15 июня 2011

Я получаю очень странное поведение из Hibernate.

Если я выполню следующий запрос, все будет работать как положено:

Criteria crit = session.createCriteria( Message.class )
    .add( Restrictions.lt( "sequenceReceived", Long.valueOf( 10 ) ) )                               
    .createAlias( "this.commands", "cmd", CriteriaSpecification.LEFT_JOIN);                        

«работает как положено» означает, что я получаюresultSet of Message, где Message.commands были с нетерпением извлечены.

Однако следующий запрос НЕ работает так же:

Criteria crit = session.createCriteria( Message.class )
    .add( Restrictions.lt( "sequenceReceived", Long.valueOf( 10 ) ) )                               
    .createAlias( "this.commands", "cmd", CriteriaSpecification.LEFT_JOIN,  Restrictions.eq( "cmd.priority", 1 ) ));

Единственное добавленное мной изменение - это дополнительноеограничение для предложения OUTER LEFT JOIN ON.Теперь сгенерированный SQL стал

ВЫБРАТЬ [...] ИЗ сообщений this_ ЛЕВЫЕ ВНЕШНИЕ СОВМЕСТНЫЕ команды1015 * Проблема в том, что теперь набор результатов все еще содержит Message, но message.commands извлекаются лениво.

Почему это происходит, и есть ли способ заставить эту загрузку происходить с нетерпением?

Примечание: у меня есть три createEntity, которые ведут себя идентично.

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