Подзапрос в предложенииwhere с CriteriaQuery для оператора большего и равногоJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Подзапрос в предложенииwhere с CriteriaQuery для оператора большего и равного

Сообщение Anonymous »

У меня есть следующий SQL-запрос, для которого я хочу написать CriteriaQuery

Код: Выделить всё

select * from EntityA ea where ea.lastUpdateTS >= (select creationDate from EntityB where status='PUBLISHED' order by creationDate DESC limit 1)
Этот последнийUpdateTs в объекте java.time.Instant. Я пробовал писать по CriteriaQuery, но он не работает, и я не могу понять, как подзапрос можно применить к корневому запросу

Код: Выделить всё

        //Main query
CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery rootCriteriaQuery = criteriaBuilder.createQuery(EntityA.class);
Root baseEntityRoot = rootCriteriaQuery.from(EntityA.class);
Path path = baseEntityRoot.get("lastUpdateTS");

//Sub query
Subquery subQuery = rootCriteriaQuery.subquery(EntityB.class);
Root subRoot = subQuery.from(EntityB.class);
subQuery.select(subRoot.get("creationDate"));
Predicate publishedPredicate = criteriaBuilder.equal(instantRoot.get("status"), "PUBLISHED");
instantSubQuery.where(publishedPredicate);
После этого мне захотелось написать код ниже

Код: Выделить всё

rootCriteriaQuery.where(criteriaBuilder.greaterThanOrEqualTo(path, instantSubQuery));
Но компилятор показывает ошибку. Может ли кто-нибудь подсказать, как создать оператор большего и равного с подзапросом.

Подробнее здесь: https://stackoverflow.com/questions/793 ... l-operator
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»