我正在创建一个包含多个表的复杂查询,并且需要列出结果。通常,我使用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 个表,所以我不想创建所有类只是为了访问价值观。
一般规则如下:
- If
select
包含单个表达式并且它是一个实体,那么结果就是该实体
- If
select
包含单个表达式并且它是一个原语,那么结果就是该原语
- If
select
包含多个表达式,则结果为Object[]
包含相应的原语/实体
所以,就你的情况而言list
is a List<Object[]>
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)