이 쿼리의 변형을 계속 시도하고 있는데 이런 일이 발생하지 않는 것 같습니다. 나는 또한이 게시물을 참조했다 : Path Expected for Join! Nhibernate 오류 이며 내 쿼리에 동일한 논리를 적용 할 수없는 것 같습니다. 내 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"
)
답변
select u from UserGroup ug inner join ug.user u
where ug.group_id = :groupId
order by u.lastname
명명 된 쿼리 :
@NamedQuery(
name = "User.findByGroupId",
query =
"SELECT u FROM UserGroup ug " +
"INNER JOIN ug.user u WHERE ug.group_id = :groupId ORDER BY u.lastname"
)
한 엔티티에서 다른 엔티티로 HQL 문에서 경로를 사용하십시오. 자세한 내용은 HQL 및 조인에 대한 Hibernate 문서 를 참조하십시오.
답변
User에 대한 연결을 보유하는 엔티티의 이름을 지정해야합니다. 예를 들면
... INNER JOIN ug.user u ...
이것이 오류 메시지가 불평하는 “경로”입니다. UserGroup에서 User 엔티티로의 경로입니다.
Hibernate는 선언적 JOIN에 의존하며, 이에 대한 결합 조건은 매핑 메타 데이터에서 선언됩니다. 이것이 경로없이 네이티브 SQL 쿼리를 구성하는 것이 불가능한 이유입니다.