java - 从 JPA native 查询中获取列名

标签 java sql hibernate jpa

我的 Web 应用程序中有一个管理控制台,允许管理员对我们的数据库执行自定义 SQL SELECT 查询。

在底层,应用程序使用的是 Hibernate,但这些查询不是 HQL,它们是纯 SQL,所以我使用的是这样的 native 查询:

protected EntityManager em;

public List<Object[]> execute(String query) {
    Query q = em.createNativeQuery(query);
    List<Object[]> result = q.getResultList();
    return result;
}

这可以正常工作,但它只返回数据行,没有额外信息。我还想获得列名,因此当我将结果打印回给用户时,我还可以打印一个标题以显示各个列的内容。

有什么办法吗?

最佳答案

Query query = entityManager.createNamedQuery(namedQuery);
NativeQueryImpl nativeQuery = (NativeQueryImpl) query;
nativeQuery.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);
List<Map<String,Object>> result = nativeQuery.getResultList();

And now you have Map<String,Object> . You can see your Column Names

关于java - 从 JPA native 查询中获取列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44626609/

相关文章:

php - PDO 联合选择结果没有任何结果

python - 对于对象列表中的对象列表问题python

java - 如何从循环外部获取每个循环的长计数值

java - hibernate 级联来拯救 parent 和 child

java - 如何以流式传输方式迭代巨大 XML 中的节点?

java - 如何从 JSP 加载放在类路径中的属性文件?

java - GWT 类 : an annotation to prevent serialization of a field?

c# - SQL 2005 MD5 哈希和 C# MD5 哈希

java - 使用 SpringBoot 和 Hibernate 与复合 pks 的双向 @OneToMany 关系

java - 将外部图像加载到 GridView (无图像)