문제
좀 더 복잡한 쿼리를 시도하고 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 '?%'
제휴하지 않습니다 StackOverflow