Как использовать CriteriaQuery подзапрос SUM для некоторых ячеек в List <Entity>? - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть буксирные таблицы, склады сущностей [id] и device_infos [id, depot_id, deviceNum];С обычным SQL, я мог бы сделать это:

SELECT `depots`.*,
( SELECT sum( device_num ) AS incomed_total FROM `device_infos` WHERE `depots`.`id` = `device_infos`.`depot_id` AND `device_infos`.`deleted_at` IS NULL ) AS `incomed_total`,

ОТ depots ПРЕДЕЛ 20 СМЕЩЕНИЕ 0

теперь я использую спецификацию метод toPredicate:

    public Predicate toPredicate(Root<Depots> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
    List<Predicate> predicate = new ArrayList<>();
    ...
    Predicate[] predicates = new Predicate[predicate.size()];
    return criteriaQuery.where(predicate.toArray(predicates)).getRestriction();

}

каксделать это с помощью CriteriaQuery? что у меня есть попытка использовать множественный выбор, но это не работает.

...