当前位置: 首页 > 知识库问答 >
问题:

应为类型:java.lang.Double实际值:java.lang.Integer在hibernate中出错

令狐珂
2023-03-14

我使用createSqlQuery接口调用hibernate中的存储过程,并且使用result transformer将结果作为bean获取。下面是我的代码

Query query=sessionfactory.getCurrentSession().createSQLQuery("exec usp_ListUsersNotSubmitTimesheet :startDate,:endDate");
        query.setDate("startDate", formatter.parse(startDate));
        query.setDate("endDate", formatter.parse(endDate));
        query.setResultTransformer(Transformers.aliasToBean(UnSubmittedTimesheetBean.class));
List queryList=query.list();

有时,sp结果返回所有整数值,有时是十进制值,有时是固定的,所以我不能给出具体的数据类型。所以我得到以下异常

expected type: java.lang.Double actual value: java.lang.Integer 

共有1个答案

寿翰飞
2023-03-14

您的存储过程返回的是整数数据类型值,我猜在您的bean中,映射的列被定义为Double,所以当Transformer要在bean中设置结果时,它试图将整数值设置为Double值,在那里它抛出了异常...

1>您可以在Bean类中进行更改(可以将column设置为Integer)。

2>您可以更改返回双精度过程的返回类型。

我更喜欢第二个。

 类似资料: