【发布时间】:2016-11-26 18:33:17
【问题描述】:
我想从我的createNativeQuery().getResultList() 返回一个映射列表,其中每个映射是一对键-值表示列名-值。我已经尝试在这样的方法中使用直接:
public List<Map<String, Object>> execQuery(String nativeQuery) {
return entityManager().query(nativeQuery).getResultList();
}
但它总是返回列表。有人知道我想要的是否可能?
我使用的 JPA 实现是 Hibernate。我目前正在使用 Java 8(不知道此信息是否与我的情况相关)。
欢迎任何帮助。
提前致谢。
【问题讨论】:
-
这样的东西适合你吗?
Query q1 = entityManager().query(nativeQuery); org.hibernate.Query hibernateQuery =((org.hibernate.jpa.HibernateQuery)q1) .getHibernateQuery(); hibernateQuery.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE); -
您不能在 JPQL 中单独使用查询。自己将结果转换为您需要的结果
-
@Apostolos 非常感谢,这解决了我的问题:D。这会将我的应用程序绑定到 Hibernate,但现在这不是问题 :)。
-
让我把它发布为接受它的答案:)
-
有时我也尽量不做 jpa-implementation-library-specific 的东西,但是改变库的机会是什么?因此,与其努力寻找 JPA 通用的解决方案,我更喜欢在代码的某些部分中使用特定于休眠的部分。
标签: java hibernate hibernate-native-query