我正在尝试使用@SqlResultSetMapping 和@ConstructorResult 将本机查询的结果映射到POJO。这是我的代码:
@SqlResultSetMapping(name="foo",
classes = {
@ConstructorResult(
targetClass = Bar.class,
columns = {
@ColumnResult(name = "barId", type = Long.class),
@ColumnResult(name = "barName", type = String.class),
@ColumnResult(name = "barTotal", type = Long.class)
})
})
public class Bar {
private Long barId;
private String barName;
private Long barTotal;
...
然后在我的 DAO 中:
Query query = em.createNativeQueryBar(QUERY, "foo");
... set some parameters ...
List<Bar> list = (List<Bar>) query.getResultList();
我读到此功能仅在 JPA 2.1 中受支持,但这正是我正在使用的。这是我的依赖:
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<version>1.0.0.Final</version>
</dependency>
我找到了一些资源,包括这个: @ConstructorResult mapping in jpa 2.1 。但我仍然没有任何运气。
我错过了什么?为什么找不到SqlResultSetMapping?
javax.persistence.PersistenceException: org.hibernate.MappingException: Unknown SqlResultSetMapping [foo]
原文由 mhlandry 发布,翻译遵循 CC BY-SA 4.0 许可协议
@SqlResultSetMapping
不应将注释放在 POJO 上。把它放在(任何)@Entity
类。 “Unknown SqlResultSetMapping [foo]”告诉您,JPA 提供程序在名称“foo”下看不到任何映射。请参阅我的另一个答案以获取正确的示例