我正在尝试使用@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>
我发现了一些资源,其中包括:jpa2.1中的@ConstructorResult映射。但是我仍然没有运气。
我想念什么?为什么找不到SqlResultSetMapping?
javax.persistence.PersistenceException: org.hibernate.MappingException: Unknown SqlResultSetMapping [foo]
@SqlResultSetMapping注释 不应放在POJO上 。放在(任何)@Entity课上。“ Unknown SqlResultSetMapping [foo]”告诉您,JPA提供程序在名称“foo”下看不到任何映射。请参阅我的另一个答案以获取正确的示例
@SqlResultSetMapping
@Entity