Hibernate JPA native 查询结果集

标签 hibernate jpa

我需要通过在 Hibernate 中执行 native 查询来获取结果集。虽然我使用的是 EntityManager,但查询和结果集可能不是实体。

需要获取List的ResultSet。由于选择输出可能会有所不同(动态读取),因此我无法使用 SqlResultSetMapping。

当我尝试下面的代码时,我得到了结果。因为我要求的是一个单值结果。 ( hibernate JPA)

Query query = manager.createNativeQuery("select name from fresher_test where id=1");
List<Object> amount = query.getResultList();

if(amount == null)
 {
    System.out.println("Hey its a null");
    return;
 }
 for(Object e : arr)
 {
   System.out.println(e.toString());
 }

输出是:爱丽丝

当我尝试从同一代码中获取多个选择时,查询为 select name,designation from fresher_test where id=1

输出为:[Ljava.lang.Object;@8b1a4f

一个对象。如何从该对象获取字段?我尝试将对象 e (List l = (List) e;) 类型转换为 List,但抛出 java.lang.ClassCastException: java.lang.String 无法转换为 java.util.List。

这有一种方法可以获取列表或数组中的值??

注意:我无法使用结果类/实体,因为结果可能是动态的。

最佳答案

获取多列时,结果为List<Object[]> 。每个Object[]包含该行的一列。所以在你的情况下,每个 Object[]将包含 2 个元素,第一个是名称,第二个是名称。

请注意getResultList()永远不会返回 null。你不应该检查它。

关于Hibernate JPA native 查询结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11502646/

相关文章:

java - Weblogic.application.ModuleException : java. lang.NoSuchFieldError:TRACE

java - 使用jpa hibernate高并发会无法获取JDBC Connection

java - 使用不在 JpaRepository 中的 @Query 注释

java - jdbc4connection + boneCP + MAT的内存泄漏

java - Datanucleus type_converter 插件

java - 非法状态异常 : Session/EntityManager is closed

mysql - Hibernate HQL - 在 COUNT 语句中使用 CASE WHEN 就像在 MySQL 中使用 IF

java - 使用 springs getHibernateTemplate,如何获取用户列表并限制结果集?

java - 如何使用 Spring 中的 @Transactional 保存实体

java - Spring 和 H2 数据库 - 无法连接到 h2 数据库