gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 21:05:54 39 4
gpt4 key购买 nike

我正在尝试使用 @SqlResultSetMapping 和 @ConstructorResult 将 native 查询的结果映射到 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]

最佳答案

@SqlResultSetMapping 注解不应放在 POJO 上。将其放在(任何) @entity 类中。 “未知的 SqlResultSetMapping [foo]”告诉您,JPA 提供程序没有看到名称为“foo”的任何映射。请参阅我的另一个答案以获取正确的示例

关于java - 如何使用 SqlResultSetMapping 将 JPA NativeQuery 的结果集映射到 POJO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25188939/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com