EJB 3中的条件查询

5

我能使用Criteria查询与EJB3实体吗?如果可以,我该如何将它们与EntityManager组合使用?

3个回答

7
JPA 2.0中引入的新功能之一是Criteria API。您需要使用JPA2实现之一: 可以通过EntityManager.getCriteriaBuilder()访问Criteria查询,并通过常规的Query 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的一部分,而问题就是关于它们的。 - Pascal Thivent

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

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

尝试过,是的;在生产中使用,不是。这只是意味着我没有大量使用它,但我并不是说“不要在生产中使用它”。 - Pascal Thivent

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接