我可以使用EclipseLink对变量执行外连接吗?

时间:2012-06-12 15:08:20

标签: sql jpa eclipselink

我有两个表T1和T2,我希望实现这样的目标:

Select * from t1 left outer join t2 on (t1.id = t2.id and t2.x = :val) where t2.x is null or t2.x = :val

我有T1和T2的实体。

在T1:

 @OneToOne(fetch = FetchType.LAZY)
 @JoinColumn(name = "ID", insertable = false, updatable = false)
 protected T2 t2;

我尝试了以下JPA查询:

SELECT t1 FROM T1 LEFT JOIN t.t1 t2 WHERE t2.x IS NULL OR t2.x = :val

但它没有给我我想要的东西。问题是当我在T2中有一个特定ID的匹配记录时,我只会收到一个T2.X值的结果。我需要所有任何值的结果,即使它是null。

生成的SQL类似于:

SELECT * FROM T1 t1 LEFT OUTER JOIN T2 t2 ON (t2.ID = t1.ID) WHERE ((t2.X IS NULL) OR (t2.X = ?))

为什么我需要这个?我在T1中有一些详细信息,T2中可能有相同的信息。 T2中的信息是优先考虑的。如果数据在T2中不可用,我只使用T1中的默认数据。

可能是我正朝着错误的方向前进。因此,欢迎任何有关解决这个问题的想法

谢谢!

1 个答案:

答案 0 :(得分:0)