- 03-5820-1777平日10:00〜18:00
- お問い合わせ
JPAの結果をエンティティに格納するのではなく、Map形式で取得したいケースがあったので実装してみました。
Tupleクラスを使用しました。
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();
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());