当前位置: 首页 > 工具软件 > Criteria4JPA > 使用案例 >

JPA criteria 查询

周翰池
2023-12-01

一.使用criteria 查询简单Demo
CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
CriteriaQuery
   
   
    
     criteriaQuery = criteriaBuilder.createQuery(Employee.class);
Root
    
    
     
      employee = criteriaQuery.from(Employee.class);
Predicate condition = criteriaBuilder.gt(employee.get(Employee_.age), 24);
criteriaQuery.where(condition);
TypedQuery
     
     
      
       typedQuery = em.createQuery(criteriaQuery);
List
      
      
       
        result = typedQuery.getResultList();
      
      
     
     
    
    
   
   

二.构建cirteriaQuery实例说明
1.CirteriaBuilder安全查询工程创建
CriteriaBuilder是一个工厂对象,安全查询的开始.用于构建JPA安全查询.可以从EntityManager 或 EntityManagerFactory类中获得CriteriaBuilder. 

比如: CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();


2.CriteriaQuery 安全查询主语句
CriteriaQuery对象必须在实体类型或嵌入式类型上的Criteria 查询上起作用。
它通过调用 CriteriaBuilder, createQuery 或CriteriaBuilder.createTupleQuery 获得。
CriteriaBuilder就像CriteriaQuery 的工厂一样。
CriteriaBuilder工厂类是调用EntityManager.getCriteriaBuilder 或 EntityManagerFactory.getCriteriaBuilder而得。 
Employee实体的 CriteriaQuery 对象以下面的方式创建:

CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
CriteriaQuery
  
  
   
    criteriaQuery = criteriaBuilder.createQuery(Employee.class);
  
  


3.Root 定义查询的From子句中能出现的类型
AbstractQuery是CriteriaQuery 接口的父类。它提供得到查询根的方法。 
Criteria查询的查询根定义了实体类型,能为将来导航获得想要的结果,它与SQL查询中的FROM子句类似。 
Root实例也是类型化的,且定义了查询的FROM子句中能够出现的类型。 
查询根实例能通过传入一个实体类型给 AbstractQuery.from方法获得。 
Criteria查询,可以有多个查询根。 

Employee实体的查询根对象可以用以下的语法获得 : 

Root
   
   
    
     employee = criteriaQuery.from(Employee.class);
   
   



 类似资料: