jpa критерий подзапроса для подсчета с предложением где - PullRequest
0 голосов
/ 30 октября 2018

Это запрос, который мне нужен,

SELECT
    t0.traderDeclarationNumber AS a1, t0.referenceNumber AS a2,(SELECT COUNT(t1.userid)
FROM
    log_table t1
WHERE
    (t1.userid = 'user')) FROM status_table t0

Я написал запрос критерия,

    final CriteriaQuery<Object[]> criteriaQuery = criteriaBuilder.createQuery(Object[].class);
    final Root<StatusTable> statusRoot = criteriaQuery.from(StatusTable.class);
    Subquery<Long> subQuery = criteriaQuery.subquery(Long.class);
    final Root<LogTable> logRoot = subQuery.from(LogTable.class);
    subQuery.select(criteriaBuilder.count(logRoot.get("userid")));
    subQuery.where(criteriaBuilder.equal(logRoot.get("userid"), "user"));
    criteriaQuery.multiselect(
            statusRoot.get("traderDeclarationNumber"),
            statusRoot.get("referenceNumber"),
            subQuery.getSelection());
    final TypedQuery<Object[]> typedQuery = entityManager.createQuery(criteriaQuery);
    List<Object[]> objectsList=typedQuery.getResultList();

Но во время выполнения кода предложение where не применяется в запросе. Сгенерированный запрос

SELECT t0.traderDeclarationNumber AS a1, t0.referenceNumber AS a2, (ВЫБЕРИТЕ COUNT (t1.userid) ОТ log_table t1) ОТ status_table t0

Только количество (идентификатор пользователя) в запросе. Пожалуйста, помогите мне найти решение.

Заранее спасибо

...