Предполагая следующую схему:
public class Foo {
@ManyToOne
private Bar bar;
}
public class Bar {
@Column
private int baz;
}
У меня есть запрос Hibernate, сгенерированный фреймворком, который выглядит следующим образом:
SELECT Foo.*
FROM Foo
ORDER BY Foo.bar.baz
Проблема в том, что Foo.bar
имеет значение null Foo
не будет частью результата, потому что Hibernate сгенерирует SQL INNER JOIN
для доступа Foo.bar
. Как я могу заставить Hibernate использовать левое соединение или иным образом включать результаты с нулевым значением bar
?
Обратите внимание, что я не могу сделать левое соединение на Foo.bar
в HQL. HQL ORDER BY
генерируется фреймворком и всегда начинается с ORDER BY Foo.
. Я не могу это изменить. Это невозможно.
Все, что я могу изменить в ORDER BY
, это часть bar.baz
.