我有一个用户,图书和UserBooks发布表。像这样的UserBooks表
|UserID | BookID | Status |
1 34 Read
1 35 Unread
2 34 Read
2 70 Read
2 32 Unread
...................我的域类是用户、Book和UserBook。在NHibernate中,我如何才能获得阅读次数最多的10本书及其用户的阅读数量?
前十名读物
| BookID | ReadCount |
34 2
70 1
...............发布于 2009-03-28 17:26:01
假设您使用复合元素映射您的UserBook类:
var top10Books = session
.CreateQuery(@"select b.Book
from User u
join fetch u.Books b
where b.Status = :status")
.SetParameter("status", "Read")
.SetMaxResults(10)
.SetResultTransformer(CriteriaSpecification.DistinctRootEntity)
.List<Book>();下面是完整的源代码的链接。
编辑:
我知道你要求读一本书的次数。以下是查询:
var top = session
.CreateQuery(@"select b.Book, count(b.Book.Id)
from User u join fetch u.Books b
where b.Status = :status
group by b.Book")
.SetParameter("status", "Read")
.SetMaxResults(10)
.List<object[]>();
foreach (var item in top)
{
var book = (Book)item[0];
var readCount = (long)item[1];
Console.WriteLine("book id: {0}, read count: {1}", book.Id, readCount);
}https://stackoverflow.com/questions/692975
复制相似问题