Czy mogę używać zapytań Kryteria z encji EJB3? Jeśli tak, jak mogę połączyć je z EntityManager?Zapytania o kryteria w EJB 3
Odpowiedz
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.
Jedną z nowych funkcji wprowadzonych w JPA 2.0 jest API Criteria. Musisz jednym z wdrożeń JPA2:
- Hibernate 3.5 ma teraz wsparcie JPA2
- EclipseLink (realizacja JPA2 odniesienia)
- Apache OpenJPA 2.0
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();
Prawda. Ale to nie jest część WZP 1.0/EJB 3.0, o to właśnie chodziło. –
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.
Dzięki, dokładnie to, czego potrzebuję! Czy kiedykolwiek tego próbowałeś? – user132371
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". –