문제

좀 더 복잡한 쿼리를 시도하고 HQL이 작업에 더 좋을 것이라고 생각했습니다. nhibernate 사용.

SELECT * FROM [Group] g 
  INNER JOIN [User2Group] ug on g.Id = ug.GroupId
  INNER JOIN [User] u ON u.Id = ug.UserId
  INNER JOIN Activity a on g.ActivityId = a.Id
WHERE u.Id = ? AND a.Lineage LIKE '?%'

SQL도 사용할 수 있다고 생각하지만 실제로 내 객체를 그런 식으로로드하는 방법은 확실하지 않습니다.

도움이 되었습니까?

해결책

그것은 당신의 엔티티가 무엇인지, 당신이 관심있는 주요 대상이 무엇인지에 달려 있습니다. 당신은 단지 하나의 엔티티 대신 그들을 당기는 것 같습니다. 나는 그룹 이이 예의 엔티티라고 가정 할 것입니다.

from MyApp.Entities.Group as g
join fetch g.Users as u
join fetch g.Activity as a
where u.Id = :userId and a.Lineage like '?%'

그것은 당신을 시작해야합니다. 그러나 당신의 구조를 알지 못하고, 나는 어둠 속에서 샷을하고 있습니다.

다른 팁

다수의 연결 (user2group 테이블)이있는 경우 시작 하여이 테이블의 모든 조인을 만들어야합니다. 올바른 매핑이있는 경우 아래 쿼리는 매력처럼 작동합니다.

from User2Group as ug
join ug.User as u
join ug.Group as g
where u.Id = :userId and g.Activity.Lineage like '?%'
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top