나는 Hibernate와 IQueryOver를 사용하여 List<Message>
을 검색하고 있습니다. 사용자는 Message
을 즐겨 찾기로 표시 할 수 있습니다. 각 Message
의 속성은 public bool IsFavourite
이며 User
중 하나 이상을 Message
으로 지정하면 true
이 포함됩니다. 그래서 내 쿼리에서 즐겨 찾기로 표시된 횟수를 검색하려면 SelectSubQuery
을 사용합니다. 여태까지는 그런대로 잘됐다. 또한 IsFavourite
을 설정하는 조건에서 하위 쿼리의 결과를 사용하려고합니다.SelectSubQuery의 결과를 NHibernate QueryOver가있는 조건에서 사용하십시오.
내 검색어는 다음과 같습니다. 나는 IsFavourite
속성을 설정할 수 있도록
Message messageAlias = null;
MessageDTO messageDto = null;
var messages = GetSessionFactory().GetCurrentSession()
.QueryOver<Message>(() => messageAlias)
.SelectList(list => list
.Select(() => messageList.Id).WithAlias(() => messageDto.Id)
.Select(() => messageList.Title).WithAlias(() => messageDto.Title)
.SelectSubQuery(
QueryOver.Of<UserMessageFavourite>()
.Where(f => f.Message.Id == messageAlias.Id).ToRowCountQuery()).WithAlias(() => messageDto.FavouriteCount)
)
)
속성 MessageDto,FavouriteCount
단지가있다. 그래서 내가하고 싶은 것이 이미 MessageDTO
엔티티에 FavouriteCount
이있는 경우 다음 방금과 같은 읽기 전용의 C# 속성을 사용할 수있는 상태에서 하위 쿼리의 결과를 사용하고 .SelectSubQuery(subquery.ToRowCountQuery()) > 0).WithAlias(() => messageDto.IsFavourite)
안녕 로마, 내 목표는'FavouriteCount' 속성을 제거하는 것이었다. 나는 이것을 'Projections' 예제를 사용하여 해결했습니다. 감사! – Bunnynut