hql查询以父表id作为键和子对象列表作为值获取映射

时间:2012-06-13 14:01:02

标签: java map hql

父表和子表有两个表具有外键关系。现在我的要求是编写hql,它返回一个带有key的映射作为父表id和value作为子对象列表。

1 个答案:

答案 0 :(得分:1)

行。你好像完全迷失了,所以我会这样做:

String hql = 
    "select distinct p from Parent p" // get all the parents
    + " left join fetch p.children";  // with their children
List<Parent> parents = session.createQuery(hql).list();

// now transform this list of parents into a Map
Map<Long, List<Child>> result = new HashMap<Long, List<Child>>(parents.size());
for (Parent parent : parents) {
    result.put(parent.getId(), parent.getChildren());
}

请注意,我并没有真正看到这张地图的重点。如果您有父母列表,每个父母都包含其子女,则不一定需要该地图。