0 0

JPA2中CriteriaBuilder查询多组条件or与and组合问题5

 

CriteriaBuilder cb = this.getEntityManager().getCriteriaBuilder();
CriteriaQuery<Employee> cq = cb.createQuery(Employee.class);
Root<Employee> root = cq.from(Employee.class);
Path<String> p_a = root.get("a");
Path<String> p_b = root.get("b");
Path<String> p_c = root.get("c");
Predicate p = cb.and(cb.equal(p_a , "1"),  cb.equal(p_b , "2"));
p = cb.or(cb.equal(p_c , "3"), p);

 执行上述代码后,发出的sql为

where
        employee.c = "3"
        or employee.a = "1"
        and employee.b = "2"

 但是我想要的结果是:

where
        employee.c = "3"
        or (
              employee.a = "1"
              and employee.b = "2"
          )

 这个该怎么改呢?

 

2013年1月24日 15:32

1个答案 按时间排序 按投票排序

0 0

        CriteriaBuilder cb = this.entityManager.getCriteriaBuilder();
        CriteriaQuery cq = cb.createQuery(User.class);
        Root<User> root = cq.from(User.class);
        Path<String> username = root.get("username");
        Path<String> password = root.get("password");
        Path<String> baseInfoRealname = root.get("username");
        Predicate p = cb.and(cb.equal(username, "zang"), cb.equal(password, "zang"));
        p = cb.or(p, cb.equal(baseInfoRealname, "li"));

        entityManager.createQuery(cq.where(p)).getResultList();


09:07:25.031 [main] DEBUG o.h.e.criteria.CriteriaQueryCompiler - Rendered criteria query -> select generatedAlias0 from User as generatedAlias0 where ( ( generatedAlias0.username=:param0 ) and ( generatedAlias0.password=:param1 ) ) or ( generatedAlias0.username=:param2 )


测试没有问题

2013年1月25日 09:08

相关推荐

    springboot结合jpa实现分页,动态多条件查询

    在本文中,我们将深入探讨如何在Spring Boot项目中利用Java Persistence API (JPA) 实现分页和动态多条件查询,并结合Thymeleaf模板引擎展示数据。Spring Boot以其简化配置和快速启动的优势,已经成为现代Java开发的...

    JPA分页查询与条件分页查询

    在实际应用中,你可能会遇到更多复杂的查询需求,例如嵌套的分页查询、联接查询、聚合函数等,JPA和Spring Data JPA都提供了丰富的API来支持这些操作。例如,你可以使用`@Query`注解自定义SQL或HQL查询,或者利用`...

    JPA复杂查询加分页查询的快速开发

    JPA复杂查询加分页查询的快速开发 JPA(Java Persistence API)是 Java 的持久层 API,用于访问、持久化数据。使用 JPA,可以快速开发复杂查询,实现高效的数据访问。下面是 JPA 复杂查询加分页查询的快速开发知识...

    spring data jpa 的Specifications动态查询

    对于多条件查询,` Specifications`支持通过`and`和`or`操作符组合多个查询条件。假设我们要根据用户名和邮箱查询用户: ```java public class UserSpecifications { public static Specification&lt;User&gt; ...

    Spring Data JPA 复杂/多条件组合分页查询

    在Spring Data JPA中,实现复杂或多条件组合的分页查询是一项常见的任务,这有助于高效地检索和展示大量数据。Spring Data JPA通过提供便捷的API使得开发者可以轻松地处理数据库查询,包括分页和排序。下面将详细...

    优秀实践分享 Spring Data JPA2

    本文是介绍Spring-data-jpa的PPT的学习笔记,整理...JPA API 条件查询 (子查询,多表连接查询) JPA结合QueryDSL轻松完成复杂查询(自连接,多表连接查询) 参与文档: Pro JPA2中文版:精通Java持久化API 优秀博文读书笔记: ...

    详解Spring Data JPA动态条件查询的写法

    在实际开发中,我们经常需要根据不同的条件进行数据查询,而 Spring Data JPA 提供了多种方式来实现动态条件查询。本文将详细介绍 Spring Data JPA 动态条件查询的写法和实现原理。 固定条件查询 在使用 Spring ...

    Pro JPA2 精通JPA2

    《Pro JPA2:精通Java™ Persistence API》不仅是JPA2的学习指南,也是开发人员在日常工作中解决问题的实用手册。无论你是初学者还是有经验的开发者,这本书都将帮助你深入了解JPA2,并将其应用到实际项目中,构建出...

    Pro JPA 2版

    JPA(Java Persistence API)是Java EE(Java Platform, ...此外,本书还为高级用户准备了深入讨论主题,包括如何处理复杂的对象关系映射,如何优化查询以及如何应用JPA2在现代企业级应用中实现高效的数据持久化。

    JPA中的多对多双向关联实体定义与注解设置

    在Java Persistence API (JPA) 中,多对多(ManyToMany)关系是表示两个实体之间复杂关联的一种方式。这种关联允许一个实体实例可以与多个其他实体实例相关联,反之亦然。例如,一个学生可以选修多门课程,一门课程...

    jpa例子jpajpa

    **Java Persistence API (JPA)** 是Java平台上的一个标准,用于管理关系数据库中的对象-关系映射(ORM)。它提供了一种方式,让开发者可以用面向对象的编程模型来操作数据库,而无需直接编写SQL语句。JPA允许你在...

    spring.jpa.data Specification使用

    2. 构建查询条件:在`toPredicate`方法内,你可以根据业务逻辑使用`criteriaBuilder`创建各种条件,如`criteriaBuilder.equal(root.get("property"), value)`用于等于条件,`criteriaBuilder.in(values)`用于`in`...

    SpringBoot中使用Spring-data-jpa分页查询

    我们可以自定义一些查询方法,如`findAllByName(String name, Pageable pageable)`,用于按名称和分页条件查询书籍: ```java @Repository("bookRepository") public interface BookRepository extends Jpa...

    springboot+jpa+swagger 动态查询

    Specification接口则是Spring Data JPA自带的一种动态查询方式,开发者可以通过组合多个Specifications来构建复杂的查询条件。 具体到这个"demo3"项目,我们可以预期它可能包含以下部分: 1. Spring Boot的主配置类...

    学习hibernate必读,JPA2新特征和JPA2映射的神秘之旅。

    在IT行业中,Hibernate是一款广泛应用的关系对象映射框架,它极大地简化了Java开发人员与数据库交互的工作。而JPA(Java Persistence API)是Java平台上的一个标准,为持久化提供了统一的API,使得开发者可以轻松地...

    Spring Data JPA中文文档[1.4.3]_springdatajpa_erlang_waitxpf_

    Spring Data JPA 提供了内置的支持,可以在查询方法中通过 `Pageable` 参数实现分页和排序。 5. **Auditing**:Spring Data JPA 提供了审计功能,可以自动记录实体的创建时间和修改时间。这可以通过 `@CreatedDate`...

    springboot-jpa 条件分页

    在这个“springboot-jpa 条件分页”主题中,我们将深入探讨如何在Spring Boot项目中使用JPA实现条件查询和分页功能。 首先,让我们了解什么是条件查询。在实际应用中,我们经常需要根据用户输入的参数来筛选数据,...

    SpringDataJpa开发--继承JpaRepository实现简单条件查询

    5. **条件查询**:在上述例子中,`findByName`方法就是通过`JpaRepository`实现的一个简单条件查询。Spring Data JPA会根据方法名动态生成对应的SQL查询语句。例如,`findByName`方法会转换为`SELECT * FROM User ...

    11_传智播客JPA详解_JPA中的一对多延迟加载与关系维护

    本教程“11_传智播客JPA详解_JPA中的一对多延迟加载与关系维护”聚焦于JPA在处理一对多关系时的延迟加载机制以及如何有效地维护这些关系。 一、JPA一对多关系 在数据库中,一对多关系意味着一个实体可以与多个其他...

    JPA多对多Demo

    本示例中的“JPA多对多Demo”是一个具体的实践案例,展示了如何在JPA中实现多对多关联关系,以及对应的增删改查方法。 多对多关联是现实世界中常见的一种关系类型,例如教师和学生之间的关系,一个教师可以教多个...

Global site tag (gtag.js) - Google Analytics