在下面关于传递办公室代码列表的查询中,我得到了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;
}
}
答案 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)";