一尘不染

如何使用SqlResultSetMapping将JPA NativeQuery的结果集映射到POJO

hibernate

我正在尝试使用@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]

阅读 1955

收藏
2020-06-20

共1个答案

一尘不染

@SqlResultSetMapping注释 不应放在POJO上 。放在(任何)@Entity课上。“ Unknown
SqlResultSetMapping [foo]”告诉您,JPA提供程序在名称“foo”下看不到任何映射。请参阅我的另一个答案以获取正确的示例

2020-06-20