1

結果としてマップを返す必要があるhqlクエリが必要です。hql新しいマップクエリを試しましたが、次のようなマップのリストを返します

    Session session = sessionFactory.getCurrentSession();
    String HQL_QUERY = "select new map(user.id as id, user.fullName as fullName)
    from User user";
    List<Map<String,String>> usersList = session.createQuery(HQL_QUERY).list();

これが唯一の解決策である場合、ループせずにマップのリストを単一のマップに変換するにはどうすればよいですか。クエリがより多くの行を返す場合、ループは変換に時間がかかるためです。助けて。

4

3 に答える 3

4

Criteria結果トランスフォーマーを使用してマップを作成することをお勧めします。公式ドキュメントについては、これを参照してください。これにより手がかりが得られ、ネット上でより多くのサンプルを見つけることができます。

于 2013-09-28T11:35:30.713 に答える
1

マップを作成することは HQL の仕事ではありません。それはあなたの仕事です。クエリから取得した行をループするだけです。

String hql = "select user.id, user.fullName from User user";
List<Object[]> rows = session.createQuery(hql).list();
Map<String, String> result = new HashMap<>();
for (Object[] row : rows) {
    result.put((String) row[0], (String) row[1]);
}
于 2013-09-28T06:30:56.923 に答える