Остановить Hibernate, добавляющий ассоциации в выбор SQL при использовании устаревшего API критериев?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Остановить Hibernate, добавляющий ассоциации в выбор SQL при использовании устаревшего API критериев?

Сообщение Anonymous »

При использовании устаревшего API критериев гибернации и фильтрации по ассоциации «многие к одному» при получении только базового типа объекта созданный SQL-код по-прежнему добавляет все столбцы ассоциации к выборке, как в следующем примере?
Сущности

Код: Выделить всё

class User
{
long id;
boolean active;
Address address;
}

class Address
{
long id;
String streetNum;
String street;
String country;
}
Критерии с псевдонимом

Код: Выделить всё

Criteria criteria = session.createCriteria(User.class, "u");
criteria.createAlias("u.address", "a");
criteria.add(Restrictions.eq("a.streetNum", "15"));

final List users = criteria.list();
Сгенерирован SQL

Код: Выделить всё

SELECT
u.id,
u.active,
a.id,
a.streetNum,
a.street,
a.country
FROM
user AS u
JOIN address AS a ON u.addressID = a.id
WHERE
a.streetNum = 15
Предполагается SQL

Код: Выделить всё

SELECT
u.id,
u.active
FROM
user AS u
JOIN address AS a ON u.addressID = a.id
WHERE
a.streetNum = 15
Проблемы с производительностью
Это приведет к тому, что SQL будет включать все столбцы всех объединенных таблиц псевдонимов, что окажет серьезное влияние на производительность таблиц с большим количеством столбцов и фильтрацией по множеству ассоциаций и разбиений на страницы.
Запрос не заинтересован в получении столбцов ассоциаций.
NHibernate
В NHibernate для C#, похоже, у них есть Projections.rootEntity() (я предполагаю, что в этом случае), но нет в Java Hibernate 5.5.7.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»