2009-10-16 9 views

Odpowiedz

0

JPA nie udostępnia interfejsu API Criteria, podobnie jak w Hibernate. Ale można użyć biblioteki ejb3criteria, która udostępnia interfejs API oparty na projekcie interfejsu API Hibernate Criteria dla EJB3 Persistence. ejb3criteria może być używany z każdą implementacją EJB3 Persistence.

+0

Dzięki, dokładnie to, czego potrzebuję! Czy kiedykolwiek tego próbowałeś? – user132371

+0

Próbowałem, tak; stosowane w produkcji, nie. To oznacza po prostu, że nie używałem go mocno, ale nie mówię "nie używaj go w produkcji". –

7

Jedną z nowych funkcji wprowadzonych w JPA 2.0 jest API Criteria. Musisz jednym z wdrożeń JPA2:

Kryteria wyszukiwania są dostępne za pośrednictwem tej EntityManager.getCriteriaBuilder() i wykonywane przez normalny interfejs API zapytań.

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

Prawda. Ale to nie jest część WZP 1.0/EJB 3.0, o to właśnie chodziło. –

1

JPA 2 (o ile kryteria API) została określona w JSR 317, który może być uważany jako następca JSR 220 (oryginalne dane/JPA EJB). Stąd twój komentarz "To prawda, ale nie jest to częścią WZP 1.0/EJB 3.0, o co właśnie chodziło." nie ma znaczenia, ponieważ można używać JPA 2 w sposób wymienny na wszystkich typowych serwerach aplikacji (WebLogic, JBOSS, Glassfish itp.). Projekty w zielonym polu będą korzystać z wersji JPA 2.0 lub nowszej. Znajdziesz wiele projektów zrealizowanych za pomocą JPA 1, ale większość firm jest w trakcie wymiany struktury JPA 1.