我有一个JPA 2查询让我疯了。 SurveyQuestion可能有一个组织。这是SurveyQuestion中的映射
@ManyToOne( optional=true )
@JoinColumn( name="organization_key" )
private Organization organization;
组织有一个名为key的字段。我使用以下jpql
创建一个TypedNamedQuerySELECT q from SurveyQuestion q
where q.organization IS NULL
or q.organization.key = :organizationKey
使用该查询我只能得到具有给定密钥的问题。如果我从查询中删除q.organization.key =:organizationKey,那么我得到所有那些没有组织的人,但我不能为我的生活让它返回那些没有组织或者没有组织的组合给定的组织。
带有EclipseLink提供程序的JPA2。
答案 0 :(得分:3)
这是JPA标准。
q.organization.key
解析为q.organization上的内部联接,而不是左联接!
你必须这样做:
SELECT q
from SurveyQuestion q
left join q.organization o
where o is null OR o.key = :organizationKey