2016-07-22 10 views
0

私のcreateNativeQuery().getResultList()からマップのリストを返したいと思います。各マップは列の名前の値を表すペアのキー値です。私はすでにこのようなメソッドでdirectを使用しようとしました:リストを返す方法Hibernateを使用して<Map <String、Object >>

public List<Map<String, Object>> execQuery(String nativeQuery) { 
    return entityManager().query(nativeQuery).getResultList(); 
} 

しかし、常にListを返します。誰かが私が望むものが可能なのか知っていますか?
私が使用しているJPA実装はHibernateです。私は現在Java 8を使用しています(この情報が私の場合に関係するかどうかはわかりません)。
助けを歓迎します。 ありがとうございます。

+1

はあなたのために、この作品のようにかなっていますか? 'クエリq1 = entityManager()。クエリ(nativeQuery); org.hibernate.Query hibernateQuery =((org.hibernate.jpa.HibernateQuery)q1) .getHibernateQuery(); hibernateQuery.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE); ' – Apostolos

+1

JPQLでクエリを単独で使用することはできません。結果を自分で必要なものに変換してください –

+0

@Apostolos大変ありがとうございます。これが私の問題を解決しました。これは私のアプリケーションをHibernateに結びつけますが、今は問題ありません:)。 –

答えて

1

マップ形式で検索結果を変換するためにResultTransformerを使用することができます

Query q1 = entityManager().query(nativeQuery); 
org.hibernate.Query hibernateQuery =((org.hibernate.jpa.HibernateQuery)q1) .getHibernateQuery(); 
hibernateQuery.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);‌​ 
1

てみてください。このよう Following the oficial documentation

List<Map<String,Object>> mapaEntity = session 
 
    .createQuery("select e from Entity") 
 
    .setResultTransformer(new AliasToEntityMapResultTransformer()) 
 
    .list();

+0

これはもっとクリーンな解決策ですが、私の現在のアプリケーションでは、 'org.hibernate.Session'へのアクセス権がありません:(しかし、あなたに感謝します:) –

関連する問題