Предполагая, что createdBy
сопоставлено в сущности User
как ленивый ManyToOne
, вы включите его в свой запрос точно так же, как и другие объединения:
from User u
join fetch u.foo as foo
join fetch foo.bar as bar
join fetch u.createdBy
Если оно не сопоставленокак ManyToOne
(почему бы и нет?), и вместо этого сопоставляется только его идентификатор, вам придется использовать перекрестное объединение И , вам придется либо преобразовать результат запроса (через пользовательский конструктор или реализацию ResultTransformer
).) или потреблять их как List<Object[]>
, поскольку они будут такими:
select u, u2
from User u, User u2
join fetch u.foo as foo
join fetch foo.bar as bar
where u.createdBy = u2.id
Само собой разумеется, что первый вариант (отображение createdBy
как ManyToOne
) гораздо более прост.