JPA notEqual Синтаксис подзапроса - PullRequest
0 голосов
/ 06 июня 2019

Я пытаюсь добавить второй подзапрос в свой существующий (рабочий) запрос

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")));

Кто-нибудь может указать мне правильное направление?

...