一尘不染

JPA Query.getResultList()-以通用方式使用

hibernate

我正在创建具有多个表的复杂查询,并且需要列出结果。通常,我使用EntityManager并将结果映射到JPA-Representation:

UserEntity user = em.find(UserEntity.class, "5");

然后,我可以访问用户UserEntity类定义的所有值。但是,如何访问从本地多表查询返回的字段值?我得到的是一个对象列表。到目前为止还可以,但是那个对象是什么?数组?地图?采集?…

//simpleExample
Query query = em.createNativeQuery("SELECT u.name,s.something FROM user u, someTable s WHERE s.user_id = u.id");
List list = query.getResultList();

//do sth. with the list, for example access "something" for every result row.

我想答案很简单,但是其中的大多数示例仅显示了直接转换为targetClass时的用法。

PS:在示例中,我当然可以使用类映射。但是在我的情况下,someTable它不是由JPA管理的,因此我没有该实体,也没有它的类表示形式,并且由于我要像20个表一样加入,所以我不想创建所有类只是访问值。


阅读 2455

收藏
2020-06-20

共1个答案

一尘不染

一般规则如下:

  • 如果select包含单个表达式并且它是一个实体,那么结果就是该实体
  • 如果select包含单个表达式并且它是一个原始类型,那么结果就是该原始类型
  • 如果select包含多个表达式,则结果Object[]包含相应的图元/实体

因此,在您的情况下listList<Object[]>

2020-06-20