2009-10-16 42 views

回答

0

JPA不提供像Hibernate一樣的Criteria API。但是您可以使用ejb3criteria這個庫,該庫提供基於EJB3持久性的Hibernate Criteria API設計的API。 ejb3criteria可以與任何EJB3持久性實現一起使用。

+0

謝謝,這正是我需要的!你有沒有嘗試過? – user132371 2009-10-16 13:58:46

+0

試過了,是的;用於生產,沒有。這只是意味着我沒有大量使用它,但我並不是說「不要在生產中使用它」。 – 2009-10-16 14:14:54

7

JPA 2.0中引入的新功能之一是Criteria API。 您需要JPA2實現之一:

條件查詢通過EntityManager.getCriteriaBuilder訪問() ,並通過正常的查詢API執行。

EntityManager em = ...; 
CriteriaBuilder qb = em.getCriteriaBuilder(); 
CriteriaQuery<Employee> query = qb.createQuery(Employee.class); 
Root<Employee> employee = query.from(Employee.class); 
query.where(qb.equal(employee.get("firstName"), "Bob")); 
List<Employee> result = em.createQuery(query).getResultList(); 
+0

是的。但這不是JPA 1.0/EJB 3.0的一部分,這就是問題所在。 – 2010-09-19 11:32:08

1

JPA 2(提供的標準API)的混合物在JSR 317可以被認爲是後繼JSR 220(原EJB/JPA規範)定義的。因此,你的評論「是真的,但這不是JPA 1.0/EJB 3.0的一部分,這就是問題所在。」是無關緊要的,因爲您可以在所有常用應用程序服務器(WebLogic,JBOSS,Glassfish等)上互換使用JPA 2。綠色領域項目將使用JPA 2.0或更高版本。您會發現許多使用JP​​A 1實施的項目,但大多數公司正在取代JPA 1框架。