JPA Query左外连接丢失元素

时间:2017-11-24 21:33:01

标签: java mysql hibernate jpa join

左外连接的mysql查询是:

rows, err := models.Db.Query("SELECT pKey, names FROM foo")
for rows.Next() {
            var pKey int
            var names []string
            err = rows.Scan(&pKey, (*pq.StringArray)(&names))
}

结果是一个列表,其中包含entity1的所有实体,其中entity2在其活动值为true时被设置,否则entity2类为null:

由于JPA(link)中的路径问题,我在JPA中建立了与外连接的关系:

SELECT a.*, b.* FROM entity1 as a 
LEFT OUTER JOIN entity2 as b
ON a.val = b.val AND b.active = true;

其中entity1和entity2被简化为:

SELECT  new wrapper(a, b) FROM Entity1 a 
LEFT JOIN a.entity2 b 
WHERE b IS NULL OR b.active = true

现在我在jpa查询中得到以下结果:

  • 如果Set of Entity2为空,则entity2设置为null
  • 如果Entity2的活动值为true,则Entity1和Entity2设置正确
  • 如果活动值为false,则不存在Entity1的条目。

这不是左外连接的预期行为。

以下是一些简单的概述: enter image description here

0 个答案:

没有答案