복잡한 엔티티가 매우 무거웠습니다. 성능 향상을 위해 db에서이 엔티티의 ID와 이름 만 선택하려고합니다. nhibernate (또는 유창한 nhibernate)로 어떻게 할 수 있습니까?nhibernate를 사용하여 DB 테이블에서 부분 데이터 선택
2
A
답변
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();
기준의 예제 코드는 관심을 가질 수있는 다음과 같은 질문에서 빌려
관련 문제
- 1. 두 테이블에서 데이터 선택
- 2. 다른 테이블에서 데이터 선택 및 정렬
- 3. 테이블에서 데이터 선택 및 다른 DB에 삽입
- 4. 데이터 집합 테이블에서 DB 테이블 만들기
- 5. 선택 부분
- 6. Zend DB 다중 테이블 조인을 사용하여 선택
- 7. MySQL의 여러 테이블에서 조인되지 않은 데이터 선택
- 8. EJB3를 사용하여 DB 테이블에서 레코드를 편집 하시겠습니까?
- 9. SQL Server OLE DB - RowSet을 사용하여 DB에서 데이터 선택
- 10. 동일한 열이있는 두 테이블에서 데이터 선택
- 11. 두 테이블에서 데이터 선택 및 날짜순으로 정렬
- 12. Informix 테이블에서 BigSerial 열 데이터 선택
- 13. 다중 열 조합을 기반으로 테이블에서 데이터 선택
- 14. 목록에없는 db 테이블에서 키 찾기
- 15. DB 테이블에서 역할 추가
- 16. PHP와 다중 DB 선택
- 17. 드래그하여 테이블에서 셀 선택
- 18. zend db를 사용하여 유니온 테이블에서 선택
- 19. 한 테이블에서 데이터 읽기 및 다른 테이블에서 데이터 읽기
- 20. impdp를 사용하여 선택 데이터 가져 오기
- 21. SQL - 문자열의 선택 부분
- 22. 테이블에서 임의의 항목 선택
- 23. 테이블에서 특정 행 선택
- 24. 다른 테이블에서 값 선택
- 25. mysql, 테이블에서 모두 선택
- 26. nHibernate를 사용하여 DetachedCriteria 직렬화
- 27. nhibernate를 사용하여 데이터베이스에 참여하십시오.
- 28. DB 선택 두 테이블
- 29. jfreechart 서블릿에서 SQL DB 선택
- 30. ORM을 사용하여 DB 만들기