2011-10-07 3 views
1

다음 nhibernate 쿼리 오버 쿼리를 사용하는 데 어려움이 있습니다. 나는 일을 복잡 이상 - 아마,하지만 문제는 여기에 있습니다 :NHibernate Queryover - 하위 컬렉션 만 반환하는 방법

  • 나는 (이 단방향 내가 다시 통계 경매에서 링크가없는)
  • 경매로 연결 AuctionStatistic라는 이름의 실체가
  • 통계표를 검색하고 모든 경매 ID를 찾아서 특정 임계 값을 충족하는 사람 만 다시 가져오고 싶습니다. 즉, 조회수 상위 500 개 경매
  • 일단이 예제에서 hardcoding from 10000 views) 경매 ID와 이름을 되돌리고 싶습니다. 이 특정 쿼리의 경우 통계 테이블에 저장된 데이터가 필요하지 않습니다 (다른 곳에서도 사용되지만 중복되지는 않습니다).

나는 다음과 같은 것을 사용하여 경매를 다시 얻을 수 있다고 생각했습니다. 내가 AuctionStatistic를 통해 조회 거니까,하지만 선택된 값이 유형 AuctionStatistic (또는 그리스트)

var auctions = _session.QueryOver<AuctionStatistic>().Where(c => c.ViewCount > 10000).Fetch(x=>x.Auction).Eager.Select(x=>x.Auction); 

사람이이 일을 더 나은 방법을 제안 할 수 있을 것으로 기대?

감사 양방향없이

JP

+0

양방향으로 만들 수 있습니까? 당신이 그와 같은 객체를 선택하면, 그것은 단지 경매의 이드를 가져올 것이라고 생각합니다. ID와 이름 만 필요할 경우에는 ID와 이름을 입력해야합니다. – dotjoe

답변

1

이는 아마 당신의 최선의 방법이다.

Auction auctionAlias = null; 
AuctionDTO dto = null; 

var auctionDtos = _session.QueryOver<AuctionStatistic>() 
    .Where(c => c.ViewCount > 10000) 
    .JoinAlias(x => x.Auction,() => auctionAlias) 
    .SelectList(list => list 
     .Select(() => auctionAlias.id).WithAlias(() => dto.id) 
     .Select(() => auctionAlias.name).WithAlias(() => dto.name)) 
    .TransformUsing(Transformers.AliasToBean<AuctionDTO>()) 
    .List<AuctionDTO>(); 
관련 문제