У меня есть AccountContactMapEntity
и ContactEntity
. У меня есть этот список идентификаторов, и я пытаюсь вернуть все переданные идентификаторы, которых нет в AccountContactMapEntity
. Прямо сейчас я не знаю, где передать этот список идентификаторов и проверить, какой из них не существует в AccountContactMapEntity
. Так что, если есть список из 10 идентификаторов, и два из них не существует в AccountContactMapEntity, я верну эти два. Любое предложение?
public List<ContactEntity> standaloneContacts(final List<Long> ids) {
final CriteriaQuery<ContactEntity> criteria = builder.createQuery(ContactEntity.class);
final Root<ContactEntity> root = criteria.from(ContactEntity.class);
final Subquery<AccountContactMapEntity> subQuery = criteria.subquery(AccountContactMapEntity.class);
final Root<AccountContactMapEntity> contact = subQuery.from(AccountContactMapEntity.class);
final List<Predicate> subCondition = new ArrayList<>();
subCondition
.add(builder.equal(contact.get(AccountContactMapEntity_.acccontact).get(ContactEntity_.id), root.get(ContactEntity_.id)));
subQuery.select(contact.get(ContactEntity_.id.getName()));
subQuery.where(subCondition.toArray(new Predicate[0]));
criteria.where(builder.not(builder.exists(subQuery)));
return entityManager.createQuery(criteria).getResultList();
}