如何使用JPA查询排除集合
我正在用JPA创建一个数据库查询,需要从结果中排除一个列表。 我该怎么做如何使用JPA查询排除集合,jpa,criteria-api,Jpa,Criteria Api,我正在用JPA创建一个数据库查询,需要从结果中排除一个列表。 我该怎么做 public List<PersonEntity> getPersonsWithoutNotWanted(List<Long> notWantedId ) { CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery<PersonEntity> cq = cb.createQuery(PersonEntity.
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();
}
public List getpersonswithoutnotwantedid(List notWantedId){
CriteriaBuilder cb=em.getCriteriaBuilder();
CriteriaQuery cq=cb.createQuery(PersonEntity.class);
Root Root=cq.from(PersonEntity.class);
//如何添加谓词或其他内容以删除所有notWantedId
TypedQuery=em.createQuery(cq);
返回query.getResultList();
}
只需使用IN,以及
cb.in(predExprForId, notWantedIds).not()
其中,predExprForId
是id字段的谓词,并将此谓词用作where子句。由于您没有提供任何类,因此无法提供除此之外的详细信息
但要确保你的收藏量不要太大。数据库实现对单个查询中允许的参数数量有限制,因此对notwantedid
的大小有实际限制
有关相关讨论,请参阅本文
你试过“在”和“不在”吗?我无法用我的收藏找到它:List notWantedId