Как мы подсчитываем строки, используя CriteriaQuery в Hibernate> = 5.2, заменяя устаревший код? - PullRequest
0 голосов
/ 04 ноября 2018

Этот код устарел, начиная с Hibernate 5.2:

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

Какой правильный / идиоматический способ убрать амортизацию?

В примечании в исходном коде Hibernate API просто сказано:

@ устарело (с версии 5.2) для сессии, используйте критерии JPA

Я понимаю, что существует нечто, называемое JPA Criteria Builder . Это, к сожалению, неправильно названо, поскольку оно не создает JPA Критерии . Однако он может вернуть JPA Criteria Query :

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

Это, однако, тупик, так как метод setProjection() отсутствует.

Обратите внимание, что мой вопрос специально ограничен Criteria Query в Hibernate 5.2+. Существует более широкая, более старая версия этого вопроса ( Как считать строки, используя более старые версии Hibernate (~ 2009)? )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...