在jpa中重写没有右连接的查询

时间:2013-12-14 20:49:17

标签: jpa eclipselink

假设您有EntityA和EntityB。 EntityB具有EntityA类型的属性,称之为“ea”。

所以你想要检索所有EntityAs(与entityB相关或不相关)你可以这样做:

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

通过这种方式,您将检索与entityB或entityA相关的与entityB无关的entityA(ea == null)。

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

1 个答案:

答案 0 :(得分:1)

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

如果从EntityA到EntityB的关系存在反面,则可以使用LEFT JOIN:

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

如果您没有反面(并且无法添加它),则使用本机查询(基本上是SQL)。