2009-11-12 2 views
1

NHibernate에서 질의에 문제가있다.NHibernate From case에서 선택

원래 SQL 쿼리

SELECT Id 
    ,Table1_Id 
    ,Table2_Id 
    ,Table3_Id 
FROM (
    SELECT Id 
     ,Table1_Id 
     ,Table2_Id 
     ,Table3_Id 
    FROM Table_123 
    WHERE Table2_Id = 72 

    UNION SELECT 
     100 As Id 
    ,151 As Table1_Id 
    ,72 As Table2_Id 
    ,20 As Table3_Id 
) a 
WHERE Table2_Id = 72 

처럼 내가 NHibernate.Criteria에 writen이 코드가 필요 보인다. 그게 가능합니까?

Greez Riyixy

+0

NHibernate는 표시되지 않은 도메인 객체와 함께 작동합니다. 어떤 오브젝트를 가지고 있고 SQL 테이블과 어떤 관계가 있는지 어떻게 알 수 있습니까? –

+0

int ID, Table1 oTable1, Table2 oTable2 및 Table3 oTable3을 가진 하나의 객체입니다. Table1, 2, 3의 경우 int ID를 가진 객체입니다. 하나의 DB 테이블 프로 오브젝트. – Riyixy

답변

1

기준 및 HQL 당신이 기준을 사용하여이 쿼리를 수행 할 수 없습니다 연합 그래서 https://www.hibernate.org/117.html#A21

를 지원하지 않습니다/현재의 형태로 HQL하지만 당신은 네이티브 SQL을 사용할 수 있습니다 다음과 같은 쿼리 :

IQuery sqlQuery = sess.CreateSQLQuery("select Id,Table1_Id....", "ClassName", typeof(ClassName)); 
sqlQuery.SetMaxResults(50); 
IList entities = sqlQuery.List(); 

나중에 참조 할 수 있도록 추상 형식을 사용하여 질문을 표현하십시오. 표 1/표 2/표 3은이 문제를 이해하기 어렵게 만듭니다.

Union이 실제로 선택해야합니다. 기본적으로 결과 집합에 행이 추가되므로 반환하려는 경우 해당 엔티티를 코드에 쉽게 만들 수 있습니다.

+0

노동 조합이 없다면? –