我正在将旧的“经典 ASP”应用程序迁移到 J2EE/Hibernate。我对以下类型的 SQL 语句有疑问:
SELECT parent.id, parent.name, parent.column1, count(child.id) AS no_of_children
FROM parent
INNER JOIN child ON child.parent_id = parent.id
GROUP BY parent.id, parent.name, parent.column1
如何在 HQL 中表达这样的内容?我试图将孩子映射为一个集合(通过使用多对一)并从集合大小中获取孩子的数量,但是 Hibernate 必须分别为每个父母加载所有“孩子”实体。
这导致执行大约 1000 个 DB 查询而不是 1 个,从而导致性能问题。
有没有办法解决?