JPA Left Join and Count

时间:2013-05-02 18:23:02

标签: hibernate jpa count left-join named-query

我想检索所有 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中的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子句中。我怎么能这样做?

0 个答案:

没有答案