Я не знаю, как выполнить запрос критерия 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 не является сущностью ». Я думаю, что моя проблема не в том, как выразить часть запроса « from », чтобы результат выдает 1 или 0 / true или false - не сущность.
Я знаю, что могу извлечь любую сущность, а затем проверить, имеет ли список результатов размер 1.
Я спрашиваю, как получить логический результат, чтобы избежать ненужной задачи получения этих столбцов, а также узнать, как это сделать.
Возможно ли это вообще?
Спасибо!
Эдуардо