2016-07-22 83 views
0

我想返回我的createNativeQuery().getResultList()中的地圖列表,其中每個地圖都是一個配對鍵值 - 表示列名稱 - 值。我已經試過直接使用這樣的方法:如何使用休眠返回列表<Map <String,Object >>

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

但它總是返回List。有人知道我想要甚麼可能嗎?
我正在使用的JPA實現是Hibernate。我目前正在使用Java 8(不知道這些信息是否與我的情況相關)。
歡迎任何幫助。 在此先感謝。

+1

做某事像這樣對你的工作? Query q1 = entityManager()。query(nativeQuery); org.hibernate.Query hibernateQuery =((org.hibernate.jpa.HibernateQuery)q1) .getHibernateQuery(); hibernateQuery.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);' – Apostolos

+1

您無法在JPQL中單獨進行查詢。把結果自己轉換成你需要的東西 –

+0

@Apostolos非常感謝你,這解決了我的問題:D。這將把我的應用程序綁定到Hibernate,但現在不是問題:)。 –

回答

1

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

您可以嘗試使用使用ResultTransformer改變你的結果以地圖的形式。 Following the oficial documentation

像這樣:

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

+0

這似乎是一個更清潔的解決方案,但在我目前的應用程序中,我沒有訪問'org.hibernate.Session' :(,但謝謝你回答:) –

相關問題