HQL中可用的Oracle left-outer-join语法简写符号(+)?

And*_*ima 2 sql oracle hql

在Oracle中,有一个运算符(+),用于在一个where构造中进行外连接,例如SELECT * FROM table t, other_table ot WHERE t.id = ot.tale_id(+),是否有类似的舒适方式,在HQL中执行此操作?

补充:或者有没有其他方法使where条件成为外连接?

Stu*_*tLC 5

有没有办法left outer join在HQL中指定?

是的,HQL通过显式连接语法支持左外连接,并且语法与SQL相同(隐含的导航属性作为连接键):

from Cat as cat
    left join cat.kittens as kitten
Run Code Online (Sandbox Code Playgroud)

outer 是可选的,即 left [outer] join

来源:HQL查询参考

是否有简写缩写left outer join,如Oracle的(+)

不,AFAIK HQL文档没有引用简写left outer join符号,如果HQL遵循RDBMS中的趋势来删除专有连接语法,根据@ a_horse_with_no_name的注释,Oracle建议不要使用专有(+)语法,类似地*=在MSSql Server中已被弃用.

  • @Andy_Lima重新阅读了该文件.如果在查询中键入"left join",则显然是显式连接.隐式连接类似于`where person.address.city =?`,你在查询中没有显式地"加入",但它仍然在人和地址之间建立连接. (2认同)