hibernate - 我们如何在 Hibernate >=5.2 中使用 CriteriaQuery 计算行数,替换不推荐使用的代码?
问题描述
从 Hibernate 5.2 开始,此代码现已弃用:
return (Long) sessionFactory.getCurrentSession().createCriteria(mainType)
.setProjection(Projections.rowCount())
.uniqueResult();
删除弃用的正确/惯用方法是什么?
Hibernate API 源代码中的注释只是说:
@deprecated (since 5.2) for Session,使用 JPA Criteria
我意识到有一种叫做JPA Criteria Builder的东西。不幸的是,这被错误命名,因为它没有构建JPA Criteria。但是,它可以返回JPA Criteria Query:
CriteriaQuery<T> criteriaQuery = sessionFactory.getCriteriaBuilder().createQuery(mainType);
然而,这是一个死胡同,因为setProjection()
缺少该方法。
请注意,我的问题特别限于 Hibernate 5.2+ 上的条件查询。这个问题有一个更广泛、更旧的版本(我们如何使用旧版本的 Hibernate (~2009) 计算行数?)
解决方案
推荐阅读
- apache-nifi - 使用 Nifi 放置 Marklogic 会引发错误“NullPointer Exception”
- java - 硒网络驱动程序。网站检测到 WebDriver。如何解决这个问题?
- android - 在 Jetpack Compose 中显示 DataStore protobuf 设置
- python - 自定义标签中的递增变量
- scala - 满足条件时跳过循环中的 N 个元素
- java - Hibernate left join fetch 对许多返回重复
- kubernetes - HDFS 应该使用哪个 StorageClass
- c - 使用结构时的代码重复
- python - 错误:列表索引超出范围 | 如何申报清单?
- php - 带有附件和基本身份验证的 Laravel HTTP 客户端 PUT 请求