CriteriaQuery не делает выбор, как он должен - PullRequest
0 голосов
/ 17 октября 2019

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

criteriaQuery.select(root.get(OrderInformationIndex_.ORDER_ID))
.where(criteriaBuilder.or(predicates2.toArray(new Predicate[predicates2.size()])))
.distinct(true).getRestriction()

Я сделал это, и он возвращает OrderInformationIndexполный объект. Таким образом, это нормально, что отличное не используется должным образом, потому что я думаю, что я должен получить только список длинных с (OrderInformationIndex_.ORDER_ID) внутри него, потому что это то, что я выбрал.

Вотполный код

@Override
    public Predicate toPredicate(Root<OrderInformationIndex> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
        final List<Predicate> predicates2 = new ArrayList<>();


        if (!orderInformationIndexFinder.isEmpty()) {
            orderInformationIndexFinder.forEach((name, value) ->
                predicates2.add(
                    criteriaBuilder.and(
                        criteriaBuilder.or(
                            criteriaBuilder.equal(root.get(OrderInformationIndex_.NAME), name),
                            criteriaBuilder.equal(root.get(OrderInformationIndex_.ALIAS), name)
                        ), criteriaBuilder.equal(root.get(OrderInformationIndex_.VALUE), value)
                    )
                ));
        }

        criteriaQuery.select(root.get(OrderInformationIndex_.ORDER_ID)).distinct(true);

        return criteriaQuery.select(root.get(OrderInformationIndex_.ORDER_ID)).where(criteriaBuilder.or(predicates2.toArray(new Predicate[predicates2.size()]))).distinct(true).getRestriction();
    }

Подводя итог, все, что мне нужно, это выбрать столбец моей таблицы.

Заранее благодарю всех, кто хочет помочь

...