JPA Query.getResultList()-以通用方式使用
我正在创建具有多个表的复杂查询,并且需要列出结果。通常,我使用EntityManager
并将结果映射到JPA-Representation:
UserEntity user = em.find(UserEntity.class, "5");
然后,我可以访问用户UserEntity
类定义的所有值。但是,如何访问从本地多表查询返回的字段值?我得到的是一个对象列表。到目前为止还可以,但是那个对象是什么?数组?地图?采集?…
//simpleExampleQuery 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个表一样加入,所以我不想创建所有类只是访问值。
回答:
一般规则如下:
- 如果
select
包含单个表达式并且它是一个实体,那么结果就是该实体 - 如果
select
包含单个表达式并且它是一个原始类型,那么结果就是该原始类型 - 如果
select
包含多个表达式,则结果Object[]
包含相应的图元/实体
因此,在您的情况下list
是List<Object[]>
。
以上是 JPA Query.getResultList()-以通用方式使用 的全部内容, 来源链接: utcz.com/qa/436003.html