Я пытаюсь добавить второй подзапрос в свой существующий (рабочий) запрос
Query query;
CriteriaBuilder idBuilder = getCriteriaBuilder();
CriteriaQuery idQuery = idBuilder.createQuery(entityClass);
Root from = idQuery.from(entityClass);
idQuery.select(from.get("id"));
Subquery<Long> subquery = idQuery.subquery(Long.class);
Root dateSQ = subquery.from(entityClass);
subquery.select(idBuilder.max(dateSQ.get("createdDate")));
subquery.groupBy(dateSQ.get("addressId"));
Так что я добавляю этот 2-й подзапрос
AND address_id NOT IN
(Select address_id FROM People WHERE address_deleted = true)
Это грубый весь запрос
SELECT * FROM People
WHERE address_id IN
(select max date)
AND address_id NOT IN
(Select address_id FROM People WHERE address_deleted = true)
Итак, я сделал что-то вроде этого
Subquery<Long> subquery2 = idQuery.subquery(Long.class);
Root deletedSQ = subquery2.from(entityClass);
subquery2.select(idBuilder.notEqual(true, deletedSQ.get("addressDeleted")));
subquery2.where(deletedSQ.get("addressId"));
Кажется, это совершенно неправильно для
subquery2.select(idBuilder.Equal(true, deletedSQ.get("addressDeleted")));
Кто-нибудь может указать мне правильное направление?