【问题标题】:JPA Criteria API JoinJPA 标准 API 加入
【发布时间】:2014-03-18 20:46:10
【问题描述】:

如何将此 JPQL 查询转换为 Criteria API?

select count(p) from Person p join p.glanceList g where p.duration < 1000 and g
.duration < 1000

【问题讨论】:

    标签: jpa criteria-api


    【解决方案1】:

    试试这个。

    CriteriaQuery<Long> q = cb.createQuery(Long.class);
    Root<Person> person = q.from(Person.class);
    Join<Person,Glance> glance = person.join("glanceList", JoinType.INNER);
    q.select(cb.count(person))
    .where(cb.lt(person.get("duration"), 1000), cb.lt(glance.get("duration"), 1000));
    

    假设Glance 是连接中实体的类。

    还有

    CriteriaBuilder cb = em.getCriteriaBuilder();
    

    【讨论】:

    • order 来自哪里?
    • 很好,根据上下文我认为应该是person,join方法是Root对象中现有方法的一部分
    • 谢谢 Koitoer - 我找不到任何官方文档显示如何获取连接实体的属性(在本例中为 Glance)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-17
    • 2017-04-18
    • 1970-01-01
    • 2019-11-03
    • 2011-01-06
    • 2011-05-04
    • 2018-08-22
    相关资源
    最近更新 更多