gpt4 book ai didi

java - Hibernate Result Transformer 无法实例化 resultclass

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:57:47 37 4
gpt4 key购买 nike

我有一个要映射到类的 SQL 查询。我正在使用 Hibernate 的 createSQLQuery,然后对我想映射到的类使用结果转换器。但是 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 class MonthlyReport
{
/** Some private properties defined here **/
public MonthlyReport(){}
/** setters and getters for all properties here **/
}

从 pgadmin 运行时,SQL 查询工作正常。在这里,我使用 addScalar 设置所有字段,因为类属性是驼峰式的。然后我使用 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,这是一个庞大的代码库。这很可能是我犯的新手错误。

最佳答案

确实,只有当实例化的类不是内部类时,才能进行这种实例化...

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

希望这对您有所帮助:)!

关于java - Hibernate Result Transformer 无法实例化 resultclass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14690822/

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