Querydsl.JPQLQuery 获取记录数

Posted

技术标签:

【中文标题】Querydsl.JPQLQuery 获取记录数【英文标题】:Querydsl.JPQLQuery getting the number of records 【发布时间】:2021-09-27 19:03:44 【问题描述】:

有什么方法可以只从 JPQL 查询中获取记录数而不形成列表? 当有更多的记录时,这将影响性能。这是我到目前为止所做的。使用 querydsl-3.7.4

Expression[] groupByExpression = // getting the group by Expression
Predicate whereCondition = // getting the where condition predicate

long count = query.from(myEntityName)
                  .where(whereCondition)
                  .groupBy(groupByExpression)
                  .list(constructorExpression).size()

【问题讨论】:

【参考方案1】:

您应该升级到 Querydsl 4 或 5 并使用 .fetchCount() 而不是 fetch()(从 Querydsl 4 开始,这是 list() 的替代品)。

【讨论】:

有没有其他办法。我使用的是 3.7.4 版本,没有权限升级到最新版本。 Querydsl 3 已经有 5 年没有维护了。那里可能存在fetchCount() 的替代方案,但五年后谁仍然知道 ;-)

以上是关于Querydsl.JPQLQuery 获取记录数的主要内容,如果未能解决你的问题,请参考以下文章

超市账单管理------之获取总记录数

使用 C# 获取 MySQL 记录数

获取每个表的记录数?

如何获取 mongodb 中的记录数

Laravel Eloquent:如何通过 whereHas() 方法获取相关记录?

SQL INQUIRY 如何获取定义的记录数