从hibernate查询返回一个Map

时间:2012-11-30 16:22:31

标签: java hashmap

在下面关于传递办公室代码列表的查询中,我得到了countryID的列表。现在不是那样,我需要一个Map,其中键是countryID,其值是office代码列表。你能帮我吗?

示例:如果我们的办事处为 abc,则def 属于国家 123 xyz 属于 789 ,我需要一张地图 (123,List(abc,def)....(789,List(xyz)))

public List getData(List officeCode) {

    try {
        StringBuffer queryString = new StringBuffer("select distinct 
        (abc.countryID)  from com.#####.TABLE table");
        queryString.append(" where table.officeCode in (:oCode)");
        return SessionFactory.getCurrentSession()
        .createQuery(queryString.toString())
        .setParameterList("oCode",officeCode )
        .list();
    }
    catch (Exception e)

    {
        e.printStackTrace();
        return null;
    }

}

1 个答案:

答案 0 :(得分:0)

执行以下查询:

select distinct abc.countryID, abc.officeCode from SomeEntity abc where abc.officeCode in (:codes)

此查询将返回List<Object[]>,每个对象数组包含countryID作为第一个元素,office局代码作为第二个元素。

然后遍历列表,填充你的地图。

注意:使用StringBuffer连接字符串文字会适得其反,而且可读性较差。你最好简单地做:

String queryString = "select distinct (abc.countryID)  from com.#####.TABLE table"
                     + " where table.officeCode in (:oCode)";