2013-12-14 18 views
2

假设你有EntityA和EntityB。 EntityB具有EntityA类型的属性称为“ea”。重写没有右键加入的查询jpa

所以,你要检索所有EntityAs(相关或不entityB),你可以做到这一点的方法:

select ea, b 
from EntityB b 
right join b.ea ea 

这样,您将检索entityA使用有关entityB或entityA不相关到entityB(ea == null)。

在JPA 2.1中不支持右连接。有没有办法在不改变关系边的情况下重写查询? (我们的业务分析师不想改变它)。

回答

1

为了完整:在JPA中支持右连接可选(至少根据JoinType documentation),也就是说,您应该检查您的JPA提供程序(EclipseLink)。

如果从EntityA到EntityB关系的反面,那么你可以使用LEFT JOIN:

SELECT ea, eb 
FROM EntityA ea 
LEFT JOIN ea.eb eb 

如果你没有反面(你可以不加的话) ,你的本地查询(基本上是SQL)。