5

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

4

3 回答 3

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();
于 2010-04-03T02:52:19.843 回答
1

JPA 2(提供标准 API)在 JSR 317 中定义,可被视为 JSR 220(原始 EJB/JPA 规范)的继承者。因此,您的评论“是的。但这不是 JPA 1.0/EJB 3.0 的一部分,这就是问题所在。” 无关紧要,因为您可以在所有常见的应用程序服务器(WebLogic、JBOSS、Glassfish 等)上互换使用 JPA 2。绿地项目将使用 JPA 2.0 或更高版本。您会发现许多项目使用 JPA 1 实现,但大多数公司正在更换 JPA 1 框架。

于 2013-06-06T18:01:59.260 回答
0

JPA 没有像 Hibernate 那样提供 Criteria API。但是您可以使用ejb3criteria,这是一个为 EJB3 Persistence 提供基于 Hibernate Criteria API 设计的 API 的库。ejb3criteria 可以与任何 EJB3 持久性实现一起使用。

于 2009-10-16T13:41:21.813 回答