我正在创建具有多个表的复杂查询,并且需要列出结果。通常,我使用EntityManager并将结果映射到JPA-Representation:
EntityManager
UserEntity user = em.find(UserEntity.class, "5");
然后,我可以访问用户UserEntity类定义的所有值。但是,如何访问从本地多表查询返回的字段值?我得到的是一个对象列表。到目前为止还可以,但是那个对象是什么?数组?地图?采集?…
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个表一样加入,所以我不想创建所有类只是访问值。
someTable
一般规则如下:
select
Object[]
因此,在您的情况下list是List<Object[]>。
list
List<Object[]>