一尘不染

Java JPA:如何将本机查询结果集转换为POJO类集合

java

我在我的项目中使用JPA。

我来到一个查询,其中我需要对五个表进行联接操作。因此,我创建了一个本机查询,该查询返回五个字段。

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

JPA中有什么方法可以将结果直接转换为POJO对象列表?

我来到以下解决方案..

@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实体类?或者我们可以将其转换为包含相同列名的任何JAVA POJO类吗?


阅读 591

收藏
2020-03-04

共1个答案

一尘不染

JPA提供了一个SqlResultSetMapping允许你将本机查询返回的任何内容映射到Entity的功能或自定义类。

EDIT JPA 1.0不允许映射到非实体类。仅在JPA 2.1中,添加了ConstructorResult来映射Java类的返回值。

另外,对于OP的计数问题,使用一个定义一个结果集映射就足够了 ColumnResult

2020-03-04