У меня есть этот тест HQL:
select distinct o from Order o left join fetch o.lineItems
и он генерирует отдельный SQL без очевидной причины:
select distinct order0_.id as id61_0_, orderline1_.order_id as order1_62_1_...
Набор результатов SQL всегда один и тот же (с отдельным SQL и без него):
order id | order name | orderline id | orderline name
---------+------------+--------------+---------------
1 | foo | 1 | foo item
1 | foo | 2 | bar item
1 | foo | 3 | test item
2 | empty | NULL | NULL
3 | bar | 4 | qwerty item
3 | bar | 5 | asdfgh item
Почему спящий режим генерирует отдельный SQL? Отдельный SQL не имеет никакого смысла и делает запрос медленнее, чем необходимо. Это противоречит FAQ , в котором упоминается, что hql independent в данном случае является всего лишь сокращением для преобразователя результатов:
session.createQuery ("выберите отдельный o from Order o left присоединиться к выборке
Хотите улучшить этот вопрос? Обновите вопрос, чтобы он фокусировался только на одной проблеме, отредактировав это сообщение .
Закрыт 4 года назад .
Зачем использовать видимость пакета (по умолчанию), если класс не должен быть общедоступным в java