JPA嵌套查询左外连接(JPA Nested Select Left Outer Join)

2019-10-29 08:03发布

是否有可能做JPA QL嵌套查询?

我怎么会写在JPA QL下面的SQL语句?

select * from preferences p left outer join (select * from preferencesdisplay where user_id='XXXX') display on ap.pref_id=display.pref_id;

JPA的实体偏好具有PREFERENCESDISPLAY一个一对多的关系。 我想所有的喜好选择是否或不存在PREFERENCESDISPLAY参考。

Answer 1:

在Hibernate中,你可以用“有”:

select ... from Preferences p left join p.displays d  with  d.user.id = 100

但在JPA我从来没有见过这样的可能性。



Answer 2:

这是否SQL甚至工作?

它将帮助,如果你表现出你的实体,但是如果你拥有了一切正确映射它应该是这样简单:

select p from Preferences p left join p.preferencesDisplays pd with pd.userId =XXXX

或者,如果有不被支持的TopLink

select p from Preferences p left join p.preferencesDisplays pd
where pd IS NULL or pd.userId = XXXX


文章来源: JPA Nested Select Left Outer Join
标签: java jpa toplink