Я пытаюсь использовать 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();
}
Подводя итог, все, что мне нужно, это выбрать столбец моей таблицы.
Заранее благодарю всех, кто хочет помочь