我想从数据库中检索所有Foo 对象和每个 Foo 对象的关联 Bar 对象的数量(零个或多个)。我想在一个查询中执行此操作,并且我不想获取 Bar 对象的列表只是为了获取它们的大小。
以下工作,但显然只返回具有匹配 Bar 对象的 Foo 对象:
@NamedQuery(name = "Foo.findAndCountBars", query = "
SELECT new com.test.MyResultContainer(f, COUNT(b.id))
FROM Foo f, Bar b
WHERE f.uniqueKey = b.uniqueKey
GROUP BY f.id
")
请注意,Foo 和 Bar 不是通过主键连接的。以下是我想要实现的(没有明确的关系,例如@OneToMany
in Foo
):
@NamedQuery(name = "Foo.findAndCountBars", query = "
SELECT new com.test.MyResultContainer(f, COUNT(b.id))
FROM Foo f LEFT JOIN Bar b
ON f.uniqueKey = b.uniqueKey
GROUP BY f.id
")
我尝试了不同的语法变体,但基本上 Eclipse 告诉我这b.id
是未知的,因为Bar
它不在FROM
子句中。我怎样才能做到这一点?