在JPA中,可以使用CriteriaBuilderCriteriaQuery来编写AND条件下存在OR条件的查询。下面是一个示例代码:

CriteriaBuilder criteriaBuilder = entityManager.getCriteriaBuilder();
CriteriaQuery<Entity> criteriaQuery = criteriaBuilder.createQuery(Entity.class);
Root<Entity> root = criteriaQuery.from(Entity.class);

Predicate predicate1 = criteriaBuilder.and(
    criteriaBuilder.equal(root.get("field1"), value1),
    criteriaBuilder.equal(root.get("field2"), value2)
);

Predicate predicate2 = criteriaBuilder.or(
    criteriaBuilder.equal(root.get("field3"), value3),
    criteriaBuilder.equal(root.get("field4"), value4)
);

criteriaQuery.where(criteriaBuilder.and(predicate1, predicate2));

List<Entity> resultList = entityManager.createQuery(criteriaQuery).getResultList();

在上面的代码中,predicate1表示AND条件,它由两个等式条件组成。predicate2表示OR条件,它由两个等式条件组成。通过criteriaBuilder.and将两个等式条件合并为AND条件,然后通过criteriaBuilder.or将两个等式条件合并为OR条件。最后,通过criteriaQuery.where将AND条件和OR条件组合起来,并执行查询获取结果

jpa写and条件下存在or条件

原文地址: https://www.cveoy.top/t/topic/h7fE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录