【问题标题】:Are all joins in JPQL equijoins?JPQL 中的所有连接都是等值连接吗?
【发布时间】:2013-09-02 00:22:30
【问题描述】:

我指的是使用关键字 [LEFT [OUTER] | 的连接。 INNER] 仅加入。不去 theta 加入。 由于 JPQL 中没有 ON 关键字,因此假设始终隐含并使用相等比较是否安全?

【问题讨论】:

    标签: join jpql


    【解决方案1】:

    在 JPQL 中,连接基于与 @ManyToOne、@OneToMany、@OneToOne 注释映射的关联。
    发出 JPQL 查询时,连接会转换为 SQL ON 关键字,例如:

    JPQL

    from Cat as cat
        inner join cat.owner as owner
        left outer join cat.kittens as kitten
    

    转换为

    select c.* 
    from Cat c
    inner join Owner owner ON owner.id = cat.owner_id  
    left outer join Cat kitten ON kitten.mother_id = c.id 
    

    所以,是的,对于 JPQL 连接,可以安全地假设始终隐含相等比较。

    【讨论】:

      猜你喜欢
      • 2011-04-25
      • 2015-07-15
      • 2019-04-29
      • 2015-03-04
      • 2011-11-04
      • 2016-01-22
      • 2016-05-13
      • 2014-11-22
      相关资源
      最近更新 更多