gpt4 book ai didi

java - JPA 未知 SqlResultSetMapping

转载 作者:行者123 更新时间:2023-12-01 17:58:08 29 4
gpt4 key购买 nike

我有

@SqlResultSetMapping(
name = "OrderDetailsReportMapping",
entities = @EntityResult(
entityClass = OrderDetailsReportDto.class,
fields = {
@FieldResult(name = "orderId", column = "col_0_0_"),
@FieldResult(name = "orgId", column = "col_1_0_")
}))
public class OrderDetailsReportMapping {

}

和 OrderDetailsReportDto.class:

public class OrderDetailsReportDto {
private Long orderId;
private Long orgId;
}

在我的 OrderManager.class 中:

StringBuilder queryView = new StringBuilder("SELECT * FROM order_details_report_view");
Query dataQuery = em.createNativeQuery(queryView.toString(), "OrderDetailsReportMapping");

但是我得到了错误:

Unknown SqlResultSetMapping [OrderDetailsReportMapping]

请帮忙。谢谢。

最佳答案

我猜想,主要问题是 @SqlResultSetMappingentityClass = OrderDetailsReportDto.class 的使用。来自 Baeldung 的教程 "A Guide to SqlResultSetMapping: 5.1 Single Entity"

EntityResult requires us to specify the entity class

您应该使用带有@Entity注释的类来存储结果。

EDIT#1 例如:

@SqlResultSetMapping(
name = "OrderDetailsReportMapping",
entities = @EntityResult(
entityClass = OrderDetailsView.class,
fields = {
@FieldResult(name = "orderId", column = "first_db_view_col_name"),
@FieldResult(name = "orgId", column = "second_db_view_col_name")
}))
@Entity
@Immutable
public class OrderDetailsView {
@Id
private Long orderId;

private Long orgId;

@Override
public String toString() {
return "OrderDetailsView{" +
"orderId=" + orderId +
", orgId=" + orgId +
'}';
}
}
 Query query = em.createNativeQuery(
"select * from order_details_report_view",
"OrderDetailsReportMapping");
List<OrderDetailsView> orderDetailsViews = query.getResultList();

编辑#2如果 "orderId" 不唯一,您可以将行号视为 id 列:1 , 2

在 Postgres 数据库上测试:

        fields = {
added >>> @FieldResult(name = "id", column = "fakeId"),
@FieldResult(name = "orderId", column = "first_db_view_col_name"),
@FieldResult(name = "orgId", column = "second_db_view_col_name")
}
 em.createNativeQuery(
added >>> "select row_number() OVER () as \"FakeId\", * "
+ "from order_details_report_view",
"OrderDetailsReportMapping");

关于java - JPA 未知 SqlResultSetMapping,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60681444/

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