HQL ERROR: путь, ожидаемый для присоединения

Я продолжаю пробовать варианты этого запроса и, похоже, не могу это сделать. Я также ссылался на этот пост: Путь, ожидаемый для присоединения! Nhibernate Error и, похоже, не может применить ту же логику к моему запросу. Мой объект User имеет коллекцию UserGroup.

Я понимаю, что запрос должен ссылаться на объекты внутри объекта, но из того, что я вижу, я...

@NamedQuery(name = "User.findByGroupId", query = "SELECT u FROM UserGroup ug 
                    INNER JOIN User u WHERE ug.group_id = :groupId ORDER BY u.lastname")

Ответ 1

select u from UserGroup ug inner join ug.user u 
where ug.group_id = :groupId 
order by u.lastname

Вам нужно использовать пути в вашем запросе HQL, от одного объекта к другому. Hibernate документация по HQL и соединения предоставляет дополнительную информацию.

Ответ 2

Вам нужно указать объект, который содержит связь с пользователем. Например,

... INNER JOIN ug.user u ...

То, что "путь" вызывает сообщение об ошибке, - путь от UserGroup к пользовательскому объекту.

Hibernate полагается на декларативные JOINs, для которых условие соединения объявляется в метаданных сопоставления. Вот почему невозможно построить собственный SQL-запрос без пути.