我正在使用JPA创建数据库查询,需要从结果中排除列表。 我该怎么做?
public List<PersonEntity> getPersonsWithoutNotWanted(List<Long> notWantedId ) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<PersonEntity> cq = cb.createQuery(PersonEntity.class);
Root<PersonEntity> root = cq.from(PersonEntity.class);
// How to add a Predicate or something else to remove all notWantedId's
TypedQuery<RequestableEntity> query = em.createQuery(cq);
return query.getResultList();
}
答案 0 :(得分:1)
只需使用IN,就像
一样cb.in(predExprForId, notWantedIds).not()
其中predExprForId
是id字段的谓词,并使用此谓词作为where子句。除此之外没有任何细节,因为你没有提供课程
但请确保您的收藏品不是太大。您的数据库实现将限制单个查询中允许的参数数量,因此notWantedIds
的大小存在实际限制。
有关相关讨论,请参阅此帖子
JPA How to get the number of parameter markers used in Criteria API?