java - 使用 Spring JPA SqlResultSetMapping 调用存储过程并将查询结果映射到非实体 POJO
问题描述
我正在尝试使用@SqlResultSetMapping 和@ConstructorResult 将存储过程的结果映射到非实体POJO。这是我的代码:
@MappedSuperclass
@SqlResultSetMapping(name = "Testing", classes = @ConstructorResult(targetClass = Testing.class, columns = {
@ColumnResult(name = "TTEAM_ID", type = Integer.class),
@ColumnResult(name = "VDATE", type = BigInteger.class),
@ColumnResult(name = "Days_in_Field", type = Integer.class),
@ColumnResult(name = "Expected_cummilative_Number_of_HH", type = Integer.class),
@ColumnResult(name = "Cummlative_HH_Reached",type = Integer.class),
@ColumnResult(name = "HH_Reached_for_day",type = Integer.class),
@ColumnResult(name = "HHs_Finalised_for_day", type = Integer.class),
@ColumnResult(name = "Number_of_HH_in_process_for_day", type = Integer.class),
@ColumnResult(name = "Number_of_HH_Refused_for_day",type = Integer.class),
@ColumnResult(name = "Number_of_Revisits_Scheduled_for_day", type = Integer.class),
@ColumnResult(name = "HH_loss_3rd_visit_attempt_refusals_for_day", type = Integer.class)}))
public class Testing {
private Integer tteam_id;
private Integer vdate;
private Integer days_in_field;
private Integer Expected_cummilative_Number_of_HH;
private Integer Cummlative_HH_Reached;
private Integer HH_Reached_for_day;
private Integer HHs_Finalised_for_day;
private Integer Number_of_HH_in_process_for_day;
private Integer Number_of_HH_Refused_for_day;
private Integer Number_of_Revisits_Scheduled_for_day;
private Integer HH_loss_3rd_visit_attempt_refusals_for_day;
public Testing(Integer tteam_id,
Integer vdate,
Integer Expected_cummilative_Number_of_HH,
Integer Cummlative_HH_Reached,
Integer HH_Reached_for_day,
Integer HHs_Finalised_for_day,
Integer Number_of_HH_in_process_for_day,
Integer Number_of_HH_Refused_for_day,
Integer Number_of_Revisits_Scheduled_for_day,
Integer HH_loss_3rd_visit_attempt_refusals_for_day ) {
this.tteam_id = tteam_id;
this.vdate = vdate;
this.Expected_cummilative_Number_of_HH = Expected_cummilative_Number_of_HH;
this.Cummlative_HH_Reached = Cummlative_HH_Reached;
this.HH_Reached_for_day = HH_Reached_for_day;
this.HHs_Finalised_for_day = HHs_Finalised_for_day;
this.Number_of_HH_in_process_for_day = Number_of_HH_in_process_for_day;
this.Number_of_HH_Refused_for_day = Number_of_HH_Refused_for_day;
this.Number_of_Revisits_Scheduled_for_day = Number_of_Revisits_Scheduled_for_day;
this.HH_loss_3rd_visit_attempt_refusals_for_day = HH_loss_3rd_visit_attempt_refusals_for_day;
}
//getter and setters
然后调用我的存储过程
public List<Testing> getDailyAchievements(){
List list;
StoredProcedureQuery query = entityManager.createStoredProcedureQuery("dailyreports", "Testing");
try {
// Execute query
query.execute();
list = query.getResultList();
} finally {
try {
query.unwrap(ProcedureOutputs.class).release();
} catch (Exception e) {
}
}
return list;
}
我最终得到了错误
无法在类上找到适当的构造函数:com.ram.Testing
在尝试调试应用程序后,我最终得到了错误
com.microsoft.sqlserver.jdbc.SQLServerException:语句已关闭。
我找到了一些资源,包括这个:@ConstructorResult 映射但我仍然没有任何运气。
我错过了什么?为什么找不到构造函数?
解决方案
推荐阅读
- selenium - Robot Framework-加载微调器选择器
- python - 显示静态文件 Django 和 rest-framework
- java - 为什么我在使用“public void main()”时会出错
- laravel-5 - 表格内的Vue组件
- sql-server - 如何在 SQL XML 中使用 CDATA
- angular - 创建多个 pdf 并压缩 Angular 4
- excel - 条形图的货币数据范围
- python - 电报机器人在给定时间发布消息
- android - Checkboxes 和 RadioGroups 的分数不在测验中列出
- java - 从 JNI 创建 Java 枚举