2016-07-22 87 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' :(,但谢谢你回答:) –

相关问题