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