2009-07-25 3 views

답변

1

는 당신이 개 선택할 수 있습니다

이 ICriteria 사용 - 사용 (구문이 정확하지 않을 수 있습니다을하지만 당신은 그림을 얻는다)

SetProjections(Projections.ProjectionList.Add(Projections.Property("prop")) 
            .Add(Projections.Property("prop1"))) 

하는 HQL에게

select c.Col1,c.Col2 from table c 

둘을 사용하는 경우 배열리스트 (또는 이와 비슷한 것)의 목록을 반환 할 것입니다. 그런 다음 그것을 가로 채서 사전을 만들면됩니다.

5

몇 가지 가능성이 있습니다.

한 가지 가능한 솔루션은 새로운 엔티티를 생성하고 같은 테이블에 매핑하는 새 엔티티를 생성,하지만 당신이 원하는 컬럼 (ID와 이름)에 매핑합니다. 이것은 매우 유연하며 다른 엔티티와 마찬가지로 해당 엔티티를 사용할 수 있습니다. 문제는 일부 중복을 도입한다는 것입니다. HQL 또 다른 해결책은 돌출부를 사용하는 것

사용

. HQL을 사용하면 select 절을 사용하여 검색 할 열을 지정할 수 있습니다. 객체의 배열이 아닌 쿼리의 결과로 적절한 엔티티 인스턴스를 원할 경우 클래스에 대한 사용자 정의 생성자를 생성하고이를 HQL 쿼리에서 사용할 수 있습니다. 대신 HQL의 기준 API를 사용하려는 경우 기준 API

를 사용

session.CreateQuery("select new Foo(f.Id, f.Name) from Foo f").List<Foo>(); 

, 당신은 SetProjection 방법을 사용할 수 있습니다. 쿼리의 개체가 아니라 개체 배열이 필요한 경우 AliasToBean 결과 변환기를 사용할 수 있습니다. NHibernate - Only retrieve specific columns when using Critera queries?

:

session.CreateCriteria(typeof(Foo)) 
    .SetProjection(Projections.ProjectionList() 
     .Add(Projections.Property("Name"), "Name") 
     .Add(Projections.Property("Id"), "Id")) 
    .SetResultTransformer(Transformers.AliasToBean(typeof(Foo))) 
    .List(); 

기준의 예제 코드는 관심을 가질 수있는 다음과 같은 질문에서 빌려

관련 문제