1

배경 : 을 감안할 때 3 개 테이블는 어떻게 3 개 테이블을 조인 할 수

results contains 2 columns vId and pId 
vTable contains 2 columns vId and data 
pTable contains 2 columns pId and data 

내가 해봤 QueryOver

SELECT v.data, p.data 
from results r 
inner join vTable v on r.vId = v.vId 
inner join pTable p on r.pId = p.pId 

를 사용하여 SQL 쿼리 이런 종류의 작업을 수행 할 다음 :

var res = GetResults(some parameters) 
      .Select(x => x.vId 
      .Select(x => x.pID); 

var dataset = session.QueryOver<vTable>() 
       .WithSubquery.WhereProperty(v => v.vId).In(res) 
       .Select(v => v.vId) 
       .Select(v => v.data) 

내가 2 테이블

var dataset = session.QueryOver<vTable>() 
       .WithSubquery.WhereProperty(v => v.vId).In(res) 
       .JoinQueryOver<pTable>(p => p.pId) 
       .WithSubquery.WhereProperty(p => p.pId).In(res) 
       .Select(v => v.vId) 
       .Select(v => v.data) 
       .Select(p => p.pId) 
       .Select(p => p.data) 

를 추가 할 때 오류 내가 잘못 뭐하는 거지

Delegate 'System.Func<System.Collections.Generic.IEnumerable<pTable>>' does not take 1 arguments 

를 얻을 그러나

VTABLE

에서 데이터를 가져 오기 위해 잘 작동?

답변

2
.JoinQueryOver<pTable>(p => p.pId) 

은 hbm에서 매핑 할 수없는 경우 ID가 아닌 매핑 ​​된 엔터티 또는 컬렉션을 가리켜 야합니다. 또한 JoinQueryOver는 vTable이 아닌 pTables를 반환 할 것이므로 반환 유형을 vTable 목록으로 유지하려는 경우 JoinAlias를 대신 사용할 수 있습니다. 그러나 원하는 경우 해당 프로젝션이므로 QueryOver 및 JoinQueryOver 호출에 별칭을 추가해야합니다

관련 문제