我在我的项目中使用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类吗?
JPA提供了一个SqlResultSetMapping允许你将本机查询返回的任何内容映射到Entity的功能或自定义类。
SqlResultSetMapping
EDIT JPA 1.0不允许映射到非实体类。仅在JPA 2.1中,添加了ConstructorResult来映射Java类的返回值。
ConstructorResult
另外,对于OP的计数问题,使用一个定义一个结果集映射就足够了 ColumnResult
ColumnResult