休眠查询与子查询?

时间:2019-10-28 21:48:12

标签: java hibernate

我有AccountContactMapEntityContactEntity。我有此ID列表,我想做的是返回AccountContactMapEntity中不存在的所有传递的ID。 现在,我不知道将ID列表传递到何处,并检查AccountContactMapEntity中不存在哪些ID。因此,如果有10个ID的列表,并且其中两个在AccountContactMapEntity中不存在,我将返回该两个ID。有什么建议吗?

   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();
    }

0 个答案:

没有答案