我在我的项目中使用 JPA。
我来到一个查询,我需要在五个表上进行连接操作。所以我创建了一个返回五个字段的本机查询。
现在我想将结果对象转换为包含相同五个字符串的 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 类吗?
原文由 Gunjan Shah 发布,翻译遵循 CC BY-SA 4.0 许可协议
JPA 提供了一个
SqlResultSetMapping
允许您将本机查询的任何返回映射到实体或自定义类.编辑 JPA 1.0 不允许映射到非实体类。只有在 JPA 2.1 中,才添加了 ConstructorResult 以将返回值映射到 java 类。
此外,对于 OP 的计数问题,使用单个
ColumnResult
定义结果集映射就足够了