Hibernate 具有关系的HQL映射

Hibernate 具有关系的HQL映射,hibernate,coldfusion,hql,coldfusion-10,Hibernate,Coldfusion,Hql,Coldfusion 10,我有一个层次模型,在这个模型中,我试图建立一个企业集合,其中包含相关的中心(一对多)。我正在使用的HQL中有以下内容: SELECT new map(b.businessName as name, c as centers) FROM Business b JOIN b.centers c GROUP BY c.centerID 我的预期结果是(使用JSON作为参考): 然而,我似乎在一对一的关系中得到了更多的结果: [ {"name": "Business 1", "centers

我有一个层次模型,在这个模型中,我试图建立一个企业集合,其中包含相关的中心(一对多)。我正在使用的HQL中有以下内容:

SELECT new map(b.businessName as name, c as centers) FROM Business b JOIN b.centers c GROUP BY c.centerID
我的预期结果是(使用JSON作为参考):

然而,我似乎在一对一的关系中得到了更多的结果:

[
  {"name": "Business 1",
   "centers": centerEntity1
  },
  {"name": "Business 2",
   "centers": centerEntity2
  }
]
最重要的是,它运行1个查询以获取业务详细信息,然后运行其他查询以获取所有中心。我假设这一切都将使用JOIN FETCH合并到一个查询中,但这会产生一个错误:


查询指定了联接获取,但获取的关联的所有者不在选择列表中[FromElement{explicit,非集合联接,获取联接,获取非惰性属性,classAlias=c,role=Business.centers,tableName=vw_hier_centers,tableAlias=centers1_,origin=vw_hier_business0_,columns={business0\u.business\u id,className=Center}][从business b JOIN FETCH b.centers c GROUP BY c.centerID中选择新地图(b.businessName作为名称,c作为中心)]

这背后的思想太复杂了。下面是一个完全符合我需要的解决方案:

SELECT DISTINCT b FROM Business b JOIN FETCH b.centers
1个查询,它将获取一系列业务及其获取的中心

SELECT DISTINCT b FROM Business b JOIN FETCH b.centers