JPA嵌套选择左外连接

时间:2009-09-08 16:45:51

标签: java jpa toplink

是否可以在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实体 PREFERENCES PREFERENCESDISPLAY 具有OneToMany关系。我想获得所有首选项是否有 PREFERENCESDISPLAY 参考。

2 个答案:

答案 0 :(得分:1)

在休眠状态下,您可以使用“with”:

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

但是在JPA中,我从未见过这种可能性。

答案 1 :(得分:0)

该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