我有AccountContactMapEntity
和ContactEntity
。我有此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();
}