Заказать автоматически внутреннее соединение

0

Я хочу, чтобы мой запрос, используя hql, возвращал некоторые значения, упорядоченные по некоторым столбцам.

Проблема в том, что я order by он автоматически выполняет внутреннее соединение. Пример:

Таблица Usuario имеет столбец idAssociado:

select u.nome 
from Usuario u
order by u.associado desc,
         u.associado.suspended asc, 
         u.associado.dateOut asc

Я хочу вернуть все записи из Usuario, даже если столбец associado (id) имеет значение NULL, но сначала приводит к тем, кто не является нулевым, а затем упорядочен с помощью suspend и dateOut.

Когда я order by suspended and dateOut он выполняет внутреннее соединение и возвращает только Usuarios, where u.associado is not null.

Как я могу выполнить этот hql с ожидаемыми результатами?

Спасибо

Теги:
database
hibernate
hql

1 ответ

1

HQL выполняет операцию INNER JOIN если ваше свойство в вашем классе находится в объекте POJO.

В вашем Usuario классе у вас есть, вероятно, свойство associado с типом Associado.

Поэтому, когда вы указываете свойство encapsuled объекта associado, HQL применяет INNER JOIN.

Если вы хотите, чтобы все объекты usuario, когда ассоциация была равна нулю, почему вы заказываете свою информацию об инкапсулированной информации в ассоциации?

Для меня вы получите запрос:

select u.nome 
from Usuario u
where u.associado is null
  • 0
    Я хочу, чтобы те, кто не равен нулю, тоже ... но в любом случае ... как, начиная с вашего sktrech, я могу вернуть данные, упорядоченные u.associado.suspended и u.associado.dateOut? Моя точка зрения заключается в том, что когда вы используете эти itens для заказа, он автоматически удаляет ненулевые значения ... я понимаю, почему, но как решить это?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню