gpt4 book ai didi

JPA 2.0 native 查询结果作为 map

转载 作者:行者123 更新时间:2023-12-03 01:34:53 24 4
gpt4 key购买 nike

我运行 JPA 2.0 native 查询,如下所示:

Query query = em.createNativeQuery("SELECT NAME, SURNAME, AGE FROM PERSON");
List list = query.getResultList();

现在list包含查询返回的所有行。我可以迭代它们,但每个条目都是一个 Object[] 其中:

  • at index 0 I find NAME
  • at index 1 I find SURNAME
  • at index 3 I find AGE

有没有人找到一种方法来做这样的事情:

Map<String, Object> row = list.get(index);
String name = row.get("NAME");
String surname = row.get("SURNAME");
Integer age = row.get("AGE");

我需要这个,因为我执行的 native 查询是动态查询,并且我不知道 SELECT 子句中字段的顺序,所以我不知道查询的 id 会是什么样子:

SELECT SURNAME, NAME, AGE FROM PERSON

SELECT AGE, NAME, SURNAME FROM PERSON

甚至

SELECT AGE, SURNAME, NAME FROM PERSON

最佳答案

您使用的是哪种 JPA - Hibernate、EclipseLink 还是其他?

在 JPA 中没有标准方法可以执行此操作,但您的特定实现可能允许这样做 - 例如,Eclipselink 有一个查询结果类型提示。

http://dev.eclipse.org/mhonarc/lists/eclipselink-users/msg03013.html

Query query = entityManager.createNativeQuery(sql);
query.setHint(QueryHints.RESULT_TYPE, ResultType.Map);

对于 Hibernate,使用 javax.persistence.Query dbQuery:

org.hibernate.Query hibernateQuery =((org.hibernate.jpa.HibernateQuery)dbQuery)
.getHibernateQuery();
hibernateQuery.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);

关于JPA 2.0 native 查询结果作为 map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7595328/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com