JPA criteria 查詢
阿新 • • 發佈:2019-02-17
一.使用criteria 查詢簡單Demo
二.構建cirteriaQuery例項說明
1.CirteriaBuilder安全查詢工程建立
CriteriaBuilder是一個工廠物件,安全查詢的開始.用於構建JPA安全查詢.可以從EntityManager 或 EntityManagerFactory類中獲得CriteriaBuilder.
CriteriaQuery物件必須在實體型別或嵌入式型別上的Criteria 查詢上起作用。
它通過呼叫 CriteriaBuilder, createQuery 或CriteriaBuilder.createTupleQuery 獲得。
CriteriaBuilder就像CriteriaQuery 的工廠一樣。
CriteriaBuilder工廠類是呼叫EntityManager.getCriteriaBuilder 或 EntityManagerFactory.getCriteriaBuilder而得。
Employee實體的 CriteriaQuery 物件以下面的方式建立:
AbstractQuery是CriteriaQuery 介面的父類。它提供得到查詢根的方法。
Criteria查詢的查詢根定義了實體型別,能為將來導航獲得想要的結果,它與SQL查詢中的FROM子句類似。
Root例項也是型別化的,且定義了查詢的FROM子句中能夠出現的型別。
查詢根例項能通過傳入一個實體型別給 AbstractQuery.from方法獲得。
Criteria查詢,可以有多個查詢根。
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);