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-запрос без пути.