gpt4 book ai didi

NHibernate : Group by and Count

转载 作者:行者123 更新时间:2023-12-03 12:05:36 27 4
gpt4 key购买 nike

我有一个 User、Book 和 UserBooks 关系表。像这样的 UserBooks 表

|UserID | BookID  | Status    |
1 34 Read
1 35 Unread
2 34 Read
2 70 Read
2 32 Unread
...................

我的域类是 用户 , 预订 用户手册 .在 NHibernate 中,如何获得用户阅读次数最多的前 10 本书及其阅读次数?

前 10 名阅读书籍
| BookID | ReadCount |
34 2
70 1
...............

最佳答案

假设您使用复合元素来映射您的 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>();

这是 link到完整的源代码。

编辑:

我看到您需要阅读一本书的次数。这是查询:
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);
}

关于NHibernate : Group by and Count,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/692975/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com