我们如何在Hibernate> = 5.2中使用CriteriaQuery来计算行数,替换不推荐使用的代码?

时间:2018-11-04 18:50:22

标签: hibernate

从Hibernate 5.2起,现在不推荐使用此代码:

    return (Long) sessionFactory.getCurrentSession().createCriteria(mainType)
            .setProjection(Projections.rowCount())
            .uniqueResult();

去除折旧的正确/惯用方式是什么?

Hibernate API源代码中的注释只是说:

  

@自5.2起已弃用会话,请使用JPA标准

我意识到有一个叫做 JPA Criteria Builder 的东西。不幸的是,它的名称错误,因为它没有建立 JPA标准。但是,它可以返回 JPA标准查询

CriteriaQuery<T> criteriaQuery = sessionFactory.getCriteriaBuilder().createQuery(mainType);

但是,这是一个死胡同,因为缺少setProjection()方法。

请注意,我的问题专门限于Hibernate 5.2+上的条件查询。这个问题有一个更广泛,更旧的版本(How do we count rows using older versions of Hibernate (~2009)?

0 个答案:

没有答案