Java EJB3中的条件查询

Java EJB3中的条件查询,java,jpa,jakarta-ee,ejb-3.0,criteria,Java,Jpa,Jakarta Ee,Ejb 3.0,Criteria,我可以对EJB3实体使用条件查询吗?如果是这样,如何将它们与EntityManager结合起来?JPA没有像Hibernate那样提供标准API。但您可以使用一个库,该库提供了一个基于Hibernate标准的API设计,用于EJB3持久性。EJB3标准可用于任何EJB3持久性实现 JPA2.0中引入的新特性之一是Criteria API。 您需要一个JPA2实现: 现在有了JPA2支持 (参考JPA2实现) 通过EntityManager.getCriteriaBuilder()访问条件查

我可以对EJB3实体使用条件查询吗?如果是这样,如何将它们与EntityManager结合起来?

JPA没有像Hibernate那样提供标准API。但您可以使用一个库,该库提供了一个基于Hibernate标准的API设计,用于EJB3持久性。EJB3标准可用于任何EJB3持久性实现

JPA2.0中引入的新特性之一是Criteria API。 您需要一个JPA2实现:

  • 现在有了JPA2支持
  • (参考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();
EntityManager em=。。。;
CriteriaBuilder qb=em.getCriteriaBuilder();
CriteriaQuery=qb.createQuery(Employee.class);
Root employee=query.from(employee.class);
其中(qb.equal(employee.get(“firstName”),“Bob”);
List result=em.createQuery(query.getResultList();

JPA2(提供标准API)在JSR317中定义,可以将其视为JSR220(原始EJB/JPA规范)的后续版本。因此,您的评论“是的。但这不是问题所涉及的JPA 1.0/EJB3.0的一部分。”与此无关,因为您可以在所有通用应用程序服务器(WebLogic、JBOSS、Glassfish等)上互换使用JPA 2。Green field项目将使用JPA 2.0或更高版本。您会发现许多项目使用JPA1实现,但大多数公司正在更换JPA1框架。

尝试过,是的;用于生产,不。这只是意味着我没有大量使用它,但我不是说“不要在生产中使用它”。没错。但这不是问题所在的JPA1.0/EJB3.0的一部分。