0

オフィス コードのリストを渡す以下のクエリでは、countryID のリストを取得します。その代わりに、キーが countryID で、その値がオフィス コードのリストである Map が必要です。手伝ってくれませんか。

例: 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;
    }

}
4

1 に答える 1

0

次のクエリを実行します。

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

このクエリはList<Object[]>、countryID を最初の要素として、オフィス コードを 2 番目の要素として含む各オブジェクト配列を返します。

次に、リストを繰り返し処理し、マップにデータを入力します。

注: StringBuffer を使用して文字列リテラルを連結すると、非生産的で読みにくくなります。単純に次のようにする方がよいでしょう:

String queryString = "select distinct (abc.countryID)  from com.#####.TABLE table"
                     + " where table.officeCode in (:oCode)";
于 2012-11-30T16:32:07.927 に答える