4

我想从数据库中检索所有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 不是通过主键连接的。以下是我想要实现的(没有明确的关系,例如@OneToManyin 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子句中。我怎样才能做到这一点?

4

0 回答 0