コラム

JPAを使用してのDB検索結果をMapに変換

JPAの結果をエンティティに格納するのではなく、Map形式で取得したいケースがあったので実装してみました。

Tupleクラスを使用しました。

JPQL

select文は項目を指定し、別名を指定する必要があります。
JPQLはもう少し良いやり方があると思います。

final TypedQuery<Map<String, Object>> query = entityManager.createQuery("select new map( b.biz_code as biz_code, b.customer_code as customer_code )  from Business b", (Class<Map<String,Object>>)(Class)Map.class );

List<Map<String,Object>> datas = query.getResultList();

NativeSQL版

 final Query query = entityManager.createNativeQuery( "select b.* from business b", Tuple.class  );

 List<Map<String, Object>> datas =  (( Stream<Tuple> )query.getResultStream()).map( t ->
	{
		Map<String,Object> map = new HashMap<String,Object>();
		int i = 0;
		for( TupleElement el : t.getElements()) {
			map.put( el.getAlias(), t.get( el.getAlias() ) ) ;
			i++;
		};
		return map;
	}
).collect(Collectors.toList());
この記事をシェアする
  • Facebookアイコン
  • Twitterアイコン
  • LINEアイコン

お問い合わせ ITに関するお悩み不安が少しでもありましたら、
ぜひお気軽にお問い合わせください

お客様のお悩みや不安、課題などを丁寧に、そして誠実にお伺いいたします。

お問い合わせはこちら
お電話でのお問い合わせ 03-5820-1777(平日10:00〜18:00)
よくあるご質問