Как правильно определить, «существует» ли предложение запроса критериев JPA вернуло истинное или ложное значение?

Я не знаю, как выполнить запрос критериев 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.

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

Это вообще возможно?

Спасибо! Эдуардо

10
задан fmw42 19 June 2018 в 02:30
поделиться