Я не знаю, как выполнить запрос критериев JPA, который возвращается с логическим выводом.
Цель состоит в том, чтобы получить критерий запроса, который при визуализации в Oracle выглядит следующим образом:
select 1 from dual where exists ( ... );
Часть where exists (...)
я выполнил с подзапросом. Я борюсь с внешним запросом.
На практике это используется для определения того, возвращает ли этот подзапрос в предложении exists
true
или false
.
Вот что я написал:
CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
CriteriaQuery<Object> query = criteriaBuilder.createQuery();
query.from(Boolean.class);
query.select(criteriaBuilder.literal(true));
Subquery<Location> subquery = query.subquery(Location.class);
Root<Location> subRootEntity = subquery.from(Location.class);
subquery.select(subRootEntity);
Path<?> attributePath = subRootEntity.get("State");
Predicate predicate = criteriaBuilder.equal(attributePath, criteriaBuilder.literal("TX"));
subquery.where(predicate);
query.where(criteriaBuilder.exists(subquery));
TypedQuery<Object> typedQuery = em.createQuery(query);
Последняя строка выводит ошибку, в которой говорится, что « Boolean не является объектом ». Я думаю, что моя проблема в том, что я не знаю, как выразить часть запроса « из », чтобы результат выводил 1 или 0 / истина или ложь, а не объект.
Я знаю, что могу получить любой а затем проверьте, имеет ли список результатов размер 1.
Я спрашиваю, как получить логический результат, чтобы избежать ненужных задач по извлечению этих столбцов, а также чтобы узнать, как это сделать.
Это вообще возможно?
Спасибо! Эдуардо