当前位置: 首页 > 面试题库 >

Hibernate Result Transformer无法实例化resultClass

微生俊健
2023-03-14
问题内容

我有一个要映射到一个类的SQL查询。我正在使用Hibernate的createSQLQuery,然后将Result
Transformer用于要映射到的类。但是Hibernate抛出此错误:

ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/mypackage].[MyPackageServlet]] 
Servlet.service() for servlet MyPackageServlet threw exception org.hibernate.HibernateException: 
Could not instantiate resultclass: com.myapp.mypackage.context.report.MonthlyReportContext$MonthlyReport        
at org.hibernate.transform.AliasToBeanResultTransformer.transformTuple(AliasToBeanResultTransformer.java:69)

据我所知,这意味着我的构造函数是错误的。它设置为public,并且为空。不知道我还要在这里做什么?

public class MonthlyReport
{
       /**  Some private properties defined here **/
       public MonthlyReport(){}  
       /** setters and getters for all properties here **/
    }

从pgadmin运行时,SQL查询工作正常。在这里,我使用addScalar设置了所有字段,因为类属性是camelCased。然后,我使用setResultTransformer:

    Query query = this.getSession().createSQLQuery(sql)
            .addScalar("policy", Hibernate.STRING)
            .addScalar("memberName", Hibernate.STRING)
            .addScalar("premium", Hibernate.BIG_DECIMAL)
            .addScalar("effectiveDate", Hibernate.DATE)
            .addScalar("newOrRenewal", Hibernate.CHARACTER)
            .addScalar("auditPayment", Hibernate.BIG_DECIMAL)
            .addScalar("auditRecieveable", Hibernate.BIG_DECIMAL)
            .addScalar("associationDues", Hibernate.BIG_DECIMAL)
            .addScalar("expenseConstant", Hibernate.BIG_DECIMAL)
            .addScalar("nsfFees", Hibernate.BIG_DECIMAL)
            .addScalar("lossControl", Hibernate.BIG_DECIMAL)
            .addScalar("premiumPayment", Hibernate.BIG_DECIMAL)
            .addScalar("totalPaid", Hibernate.BIG_DECIMAL)
            .addScalar("month", Hibernate.STRING)
            .addScalar("installment", Hibernate.STRING)
            .setResultTransformer(new AliasToBeanResultTransformer(MonthlyReport.class));
    List<MonthlyReport> monthlyReport = query.setString("month", month)
            .setString("startPayDate", month + "/" + cal.getActualMinimum(Calendar.DAY_OF_MONTH) + "/" + year)
            .setString("endPayDate", month + "/" + cal.getActualMaximum(Calendar.DAY_OF_MONTH) + "/" + year)
            .setString("fundYear", fundYear)
            .list();

任何帮助是极大的赞赏。我继承了这个项目,之前从未使用过Java或Hibernate,这是一个很大的代码库。这很可能是我犯的菜鸟错误。


问题答案:

确实,只有当实例化的类不是内部类时,才能进行此实例化。

您可以将内部类重构为普通类,也可以使其变为静态。

希望这有所帮助 :)!



 类似资料:
  • 问题内容: 完整堆栈跟踪: 第11行指向此查询的最后一行: 这是EmployeeScore.class: 构造函数在里面,为什么它不起作用?注意:我也在使用Spring,这是一个DTO bean。 我在这里想念什么? 问题答案: 的无参数构造函数应为public:

  • 我试图使用Postgis 2.2和Postgreql 9.5与JPA,Postgis 9.5方言。我已经在pom.xml的要求,按这里http://www.hibernatespatial.org/documentation/documentation/和类型导入正确,但是当我试图运行程序使用几何类型我得到这个错误: 我显然遗漏了一些配置,有人能指出是什么吗?

  • 我在MapFragment的布局文件中出现了这个错误 我试过了 > 安装Google Play服务,但仍有错误 - com.google.android.gms.maps.MapFragment(开放类,显示异常,清除缓存) 提示:在自定义视图中使用view.isinEditMode()跳过代码或在IDE中显示示例数据。 如果这是一个意外错误,您也可以尝试构建项目,然后手动刷新布局。 异常详细信息

  • 我正在将一个Java EE应用程序部署到Bluemix,当第一个请求到达时,我得到了这个错误: 2015-05-20T23:11:58.51+0200[app/0]OUT[INFO]FFDC1015I:已创建FFDC事件:“java.util.ServiceConfigurationError:javax.servlet.ServletContainerInitializer:Provider o

  • 我正在尝试将H2设置为内存数据库。我已将其配置为: 然而,当我尝试运行它时,我会遇到这个错误 我不确定它为什么不接受jdbc url,我的confg格式有什么问题吗?

  • 我想使用我的本地代码通过spark-sql连接到远程配置单元。这是我的代码: 请帮帮我.

  • 我试图在Angular2应用程序中实例化一个对象,以便在我正在开发的组件中使用。 这个代码段在RC5中运行良好。现在我正在尝试升级到Angular2最终版本,并在运行<code>ng serve</code>或<code>ng build</code>时出现此错误, 如何解决此问题?是否有另一种实例化管道的方法?或者Angular是否停止支持组件内部管道的实例化?