JPA:使用entityManager的多个条件(OR子句)

时间:2013-08-19 09:24:53

标签: jpa jpa-2.0 criteria-api

我正在使用JPA(实体管理器)Criteria查询来从数据库中获取结果。我需要在标准之间加上“OR”条款。

我的代码如下:

List<Predicate> criteraList = new ArrayList<Predicate>();
if(user.getEid() != null){
    criteraList.add(criteriaUserCountry.like((Expression) userList.get("userCountryPK").get("user").get("eid"), "%" + user.getEid() + "%" ));
}
if(user.getFirstName() != null) {
    criteraList.add(criteriaUserCountry.like((Expression) userList.get("userCountryPK").get("user").get("firstName"), "%" + user.getFirstName() + "%" ));
}
cq.where(criteraList.toArray(new Predicate[]{}));
TypedQuery<UserCountry> query = entityManager.createQuery(cq);

就sql查询而言,上面的代码在不同的标准之间插入“AND”。如何使用实体管理器的标准实现“OR”条款。

1 个答案:

答案 0 :(得分:1)

使用OR predicate

请注意,由于varargs过载,您可以将Predicate[]传递给它。