В JPA 2, с помощью CriteriaQuery, как к результатам подсчета

Ааааа ... Мне нужно разобраться в проблеме после 5 минут публикации вопроса ..

Проблема заключалась в том, что я импортировал неправильный таймер, который был недостаточно неправильным, чтобы вызвать явные проблемы с выполнением кода (возможно, урок для следующего человека).

Проблема была импортирована благодаря моей IDE

import { timer } from "rxjs/internal/observable/timer";

, но правильный импорт -

import { timer } from 'rxjs';

, и теперь мой код работает, как и ожидалось, по волшебству

109
задан Sean Patrick Floyd 4 May 2011 в 14:30
поделиться

3 ответа

Запрос типа MyEntity вернет MyEntity. Вам нужен запрос для Long.

CriteriaBuilder qb = entityManager.getCriteriaBuilder();
CriteriaQuery<Long> cq = qb.createQuery(Long.class);
cq.select(qb.count(cq.from(MyEntity.class)));
cq.where(/*your stuff*/);
return entityManager.createQuery(cq).getSingleResult();

Очевидно, вы захотите построить свое выражение с любыми ограничениями, группировками и т.д., которые вы пропустили в примере.

205
ответ дан 24 November 2019 в 03:20
поделиться

С Spring Data Jpa мы можем использовать этот метод:

    /*
     * (non-Javadoc)
     * @see org.springframework.data.jpa.repository.JpaSpecificationExecutor#count(org.springframework.data.jpa.domain.Specification)
     */
    @Override
    public long count(@Nullable Specification<T> spec) {
        return executeCountQuery(getCountQuery(spec, getDomainClass()));
    }
0
ответ дан 24 November 2019 в 03:20
поделиться
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Long> cq = cb.createQuery(Long.class);
cq.select(cb.count(cq.from(MyEntity.class)));

return em.createQuery(cq).getSingleResult();
22
ответ дан 24 November 2019 в 03:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: