Могу ли я использовать запросы Criteria с объектами EJB3? Если да, то как я могу объединить их с EntityManager?Критерии запросов в EJB 3
ответ
JPA не предоставляет API критериев, например, в спящем режиме. Но вы можете использовать ejb3criteria, библиотеку, которая предоставляет API на основе API-интерфейсов Hibernate Criteria для сохранения в EJB3. ejb3criteria может использоваться с любой реализацией выполнения EJB3.
Одной из новых функций, представленных в JPA 2.0, является API критериев. Вам нужно один из реализаций JPA2:
- Hibernate 3.5 теперь поддерживает JPA2
- EclipseLink (эталонная реализация JPA2)
- Apache OpenJPA 2.0
Критерии запросы доступны через 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();
Правда. Но это не относится к JPA 1.0/EJB 3.0, о чем и шла речь. –
JPA 2 (при условии, критерии API) была определена в JSR 317, которые можно рассматривать в качестве преемника JSR 220 (оригинал EJB/JPA спецификации). Следовательно, ваш комментарий «Правда. Но это не часть JPA 1.0/EJB 3.0, о чем и шла речь». не имеет значения, поскольку вы можете использовать JPA 2 взаимозаменяемо на всех распространенных серверах приложений (WebLogic, JBOSS, Glassfish и т. д.). Проекты с зелеными полями будут использовать JPA 2.0 или новее. Вы найдете много проектов, реализованных с использованием JPA 1, но большинство компаний находятся в процессе замены структуры JPA 1.
Спасибо, это именно то, что мне нужно! Вы когда-нибудь пробовали? – user132371
Пробовал, да; используемый в производстве, нет. Это просто означает, что я не использовал его сильно, но я не говорю «не используйте его в производстве». –