2012-05-11 61 views
1

我有两个实体A,B关系正在进行中,可选,一对多从A到B(多边),我想选择每个B和它的(或者如果没有与该BI有关的A需要空值),那么使用正确的外连接可以轻松完成,但是hibernate不支持在标准API中进行右外连接的问题,所以我想为此解决此问题。JPA标准(和JPQL)右外连接

+0

如果关联没有按照您导航的方向进行建模,则无法使用“Criteria”API执行连接。您可以尝试使用HQL并编写与您想要的右外连接等效的ANSI-89连接(希望RDBM的优化器将有效地执行连接)。 –

+0

我决定不使用Criteria API,只使用JPQL“select b,a from a a right join a.lotsOfBs b” –

回答

2

根据你的场景你想使用左连接。像

select b from B b left join A a 
where a.fkey is null 

,或者如果你想要的任何标准之前加入,然后使用

select b from B b left join A a with a.type = 1 
where a.fkey is null 

这与被送达“和”用“的”子句将服务器类似用途

例如:

select t from Template t left join t.profiles p with p.type = 1 
where p.id is null 

这将得到所有没有配置文件类型1的模板