【问题标题】:How to do it with JPA Criteria API?如何使用 JPA Criteria API 做到这一点?
【发布时间】:2013-07-12 11:17:57
【问题描述】:

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

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

【问题讨论】:

    标签: java join jpa-2.0 criteria-api


    【解决方案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 则适用于您所拥有的静态查询。

    【讨论】:

    • 感谢您的回答。有用。我同意,替换那个简单的 JPQL 是没有意义的。我有动态查询,但这部分我不知道该怎么做。
    • 啊。那好吧。很高兴能帮上忙。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-19
    • 2019-04-30
    • 2017-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多