JPA:如何将本机查询结果集转换为POJO类集合 [英] JPA : How to convert a native query result set to POJO class collection

查看:309
本文介绍了JPA:如何将本机查询结果集转换为POJO类集合的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在我的项目中使用JPA。

I am using JPA in my project.

我来到一个查询,我需要在五个表上进行连接操作。所以我创建了一个返回五个字段的本机查询。

I came to a query in which I need to make join operation on five tables. So I created a native query which returns five fields.

现在我想将结果对象转换为包含相同五个字符串的java POJO类。

Now I want to convert the result object to java POJO class which contains the same five Strings.

JPA中是否有任何方法可以直接将该结果转换为POJO对象列表?

Is there any way in JPA to directly cast that result to POJO object list ??

我来到以下解决方案..

I came to the following solution ..

@NamedNativeQueries({  
    @NamedNativeQuery(  
        name = "nativeSQL",  
        query = "SELECT * FROM Actors",  
        resultClass = db.Actor.class),  
    @NamedNativeQuery(  
        name = "nativeSQL2",  
        query = "SELECT COUNT(*) FROM Actors",  
        resultClass = XXXXX) // <--------------- problem  
})  

现在在resultClass中,我们是否需要提供一个实际的JPA实体类?
OR
我们可以把它转换成任何包含相同列名的JAVA POJO类吗?

Now here in resultClass, do we need to provide a class which is actual JPA entity ? OR We can convert it to any JAVA POJO class which contains the same column names ?

推荐答案

JPA提供 SqlResultSetMapping 允许您将原始查询的任何返回值映射到实体或自定义类

编辑 JPA 1.0不允许映射到非实体类。仅在JPA 2.1中, ConstructorResult 已添加到地图中返回值一个java类。

EDIT JPA 1.0 does not allow mapping to non-entity classes. Only in JPA 2.1 a ConstructorResult has been added to map return values a java class.

另外,对于OP的计数问题,它应该足以用单个 ColumnResult

Also, for OP's problem with getting count it should be enough to define a result set mapping with a single ColumnResult

这篇关于JPA:如何将本机查询结果集转换为POJO类集合的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆