0

如何在 JPA2 中进行 Criteria Query,这相当于使用和不使用元模型的这个 JPQL?

SELECT p FROM Employee e JOIN e.phones p WHERE e=:empl
4

1 回答 1

1
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Phone> criteriaQuery = cb.createQuery(Phone.class);
Root<Employee> employee = criteriaQuery.from(Employee.class);
CollectionJoin<Employee, Phone> phone = employee.join(Employee_.phones);
criteriaQuery.where(cb.equal(employee, empl);
criteriaQuery.select(phone);
TypedQuery<Phone> query = em.createQuery(criteriaQuery);
List<Phone> phones = query.getResultList();

也就是说,我认为用上面可怕的、不可读的代码行替换一个简单、明显的 JPQL 查询毫无意义。条件查询对于动态构造查询很有用,但 JPQL 适合您所拥有的静态查询。

于 2013-07-14T14:24:10.810 回答