假设您有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中,不支持右连接。有没有办法重写查询而不改变关系的一面? (我们的业务分析师不想改变它。)
答案 0 :(得分:1)
为了完整性:在JPA中支持可选的右连接(至少根据JoinType documentation),这意味着,您应该检查您的JPA提供程序(EclipseLink)。
如果从EntityA到EntityB的关系存在反面,则可以使用LEFT JOIN:
SELECT ea, eb
FROM EntityA ea
LEFT JOIN ea.eb eb
如果您没有反面(并且无法添加它),则使用本机查询(基本上是SQL)。