2014-04-01 3 views
0

3 개의 테이블에 걸쳐 조건을 적용하여 간단한 선택을 수행하려고합니다.OR- ICriteria를 사용하여 두 조건 결합

Select a.* 
    FROM TBL_A a 
    JOIN TBL_B b ON a.bId=b.Id 
    JOIN TBL_C c ON a.cId=c.Id 
    JOIN TBL_D d ON c.dId=d.Id 
WHERE (b.value='X' OR c.value='x') 
    AND d.someFlag=1 

이러한 테이블이 올바르게 매핑되었다고 가정하면 ICriteria API를 사용하여 이러한 쿼리를 어떻게 얻을 수 있습니까?

나는 그 모두를 충족하지 않습니다 지금까지 무엇을 ...

답변

0

ICriteria 쿼리는 documenation 다음, 다음과 같이 수 :

쿼리 스 니펫 (snippet) :

IList<A> list = sess.CreateCriteria(typeof(A), "a") 
    .CreateAlias("B", "b")     // B is property of A a.B 
    .CreateCriteria("C", "c")    // C is property of A a.C 
    .CreateAlias("D", "d")     // D is property of C c.D 

    .Add(Expression.Disjunction()   // OR statement 
     .Add(Expression.Eq("b.value", "X")) // a property "value" from "b" 
     .Add(Expression.Eq("c.value", "x")) // a property "value" from "c" 
    ) 
    .Add(Expression.Eq("d.someFlag", 1)) // AND this expression 

              // we are still selecting just a.* 
    .SetResultTransformer(Transformers.AliasToBean<A>()) 
    .List<A>()