【问题标题】:JPA 2 CriteriaBuilder Join without relationshipJPA 2 CriteriaBuilder 无关系加入
【发布时间】:2014-09-08 17:26:04
【问题描述】:

我想使用 JPA 2 CriteriaBuilder 构建查询:

SELECT part_new.*, pn_old.pnumber FROM Part part_new 
JOIN Partnumber pn_new ON part_new.fk_partnumber = pn_new.id
JOIN Partnumber pn_old ON pn_new.pnumber = pn_old.pnumber
JOIN Part part_old ON part_old.fk_partnumber = pn_old.id
WHERE part_old.available=0 AND pn_old.pnumber IN('foo', 'bar')

Partnumber.pnumber 上没有 jpa 关系,只是一个普通的字符串属性。 (上面代码中的第 3 行)。是否可以使用 JPA 2 QueryBuilder 构建此查询?

【问题讨论】:

    标签: jpa-2.0 criteria-api


    【解决方案1】:

    知道了:必须使用隐式连接 (cb.equal)。

    【讨论】:

    • 太糟糕了,你没有提供更多的代码作为例子......我自己也在努力解决这个问题,但你的回答不是很有帮助。
    • 鉴于您对 JPA 标准查询有一些基本知识,我不知道为什么这个答案没有帮助。只需在您的查询中添加一个限制,检查您要加入的属性是否相等。提供代码示例对我来说似乎没用,因为 JPA 标准查询以不同的方式使用(有或没有元模型,...)。
    • 我现在想通了。我知道我必须添加一个Restriction,但cb.equal 需要结合两个不同的Roots 并不是很明显。当然,如果您已经知道,那似乎总是显而易见的 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 2016-12-27
    • 1970-01-01
    • 1970-01-01
    • 2019-07-11
    • 2013-01-03
    相关资源
    最近更新 更多