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