首页 > 解决方案 > 我们如何在 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) 计算行数?

标签: hibernate

解决方案


推荐阅读