首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NHibernate :按并计数分组

NHibernate :按并计数分组
EN

Stack Overflow用户
提问于 2009-03-28 15:40:58
回答 1查看 8K关注 0票数 4

我有一个用户,图书和UserBooks发布表。像这样的UserBooks表

代码语言:javascript
复制
|UserID | BookID  | Status    |
   1        34      Read
   1        35      Unread 
   2        34      Read
   2        70      Read
   2        32      Unread  
   ...................

我的域类是用户BookUserBook。在NHibernate中,我如何才能获得阅读次数最多的10本书及其用户的阅读数量?

前十名读物

代码语言:javascript
复制
| BookID | ReadCount |
   34         2
   70         1
   ...............
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-03-28 17:26:01

假设您使用复合元素映射您的UserBook类:

代码语言:javascript
复制
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>();

下面是完整的源代码的链接

编辑:

我知道你要求读一本书的次数。以下是查询:

代码语言:javascript
复制
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);
    }
票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/692975

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档