1. 程式人生 > >JPA criteria 查詢

JPA criteria 查詢

一.使用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);