Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用JPA标准API实现这一点?_Java_Join_Jpa 2.0_Criteria Api - Fatal编程技术网

Java 如何使用JPA标准API实现这一点?

Java 如何使用JPA标准API实现这一点?,java,join,jpa-2.0,criteria-api,Java,Join,Jpa 2.0,Criteria Api,我如何在JPA2中执行条件查询,这相当于使用和不使用元模型的JPQL SELECT p FROM Employee e JOIN e.phones p WHERE e=:empl CriteriaBuilder cb=em.getCriteriaBuilder(); CriteriaQuery-CriteriaQuery=cb.createQuery(Phone.class); Root employee=criteriaQuery.from(employee.class); Collecti

我如何在JPA2中执行条件查询,这相当于使用和不使用元模型的JPQL

SELECT p FROM Employee e JOIN e.phones p WHERE e=:empl
CriteriaBuilder cb=em.getCriteriaBuilder();
CriteriaQuery-CriteriaQuery=cb.createQuery(Phone.class);
Root employee=criteriaQuery.from(employee.class);
CollectionJoin phone=雇员加入(雇员电话);
其中(cb.equal(雇员、雇员);
criteriaQuery.选择(电话);
TypedQuery=em.createQuery(criteriaQuery);
List phones=query.getResultList();

也就是说,我认为用上面可怕的、不可读的代码行替换一个简单、明显的JPQL查询没有任何意义。条件查询对于动态构造查询很有用,但JPQL对于静态查询非常有用。

谢谢你的回答。它很有效。我同意,替换简单的JPQL没有任何意义。我有dyna米卡尔询问,但就这一部分我不知道怎么做。啊。好吧,那么。很高兴能帮上忙。
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();