Спящий запрос с подзапросом? - PullRequest
0 голосов
/ 29 октября 2019

У меня есть 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();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...