1. 错误:
严重: Servlet.service() for servlet [spring] in context with path [] threw exception [Request processing failed; nested exception is java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.Long] with root cause
java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.Long
at com.tcl.component.mobile.biz.service.impl.TypeValueServiceImpl.getTypeValueList(TypeValueServiceImpl.java:61)
at com.tcl.application.mobile.web.controller.ConfigController.typeValueList(ConfigController.java:352)
at com.tcl.application.mobile.web.controller.ConfigController$$FastClassByCGLIB$$f19fa2e6.invoke()
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
2. 代码如下:
List countList = dao.executeSelectSql(sqlCount);
Long typeValueCount = (Long) countList.get(0);
@Override
public List executeSelectSql(final String sql, final Object... params) {
return ht.execute(new HibernateCallback>() {
@Override
public List doInHibernate(Session session) throws HibernateException, SQLException {
SQLQuery sqlQuery = session.createSQLQuery(sql);
if (ArrayUtil.isNotEmpty(params)) {
for (int i = 0; i < params.length; i++) {
sqlQuery.setParameter(i, params[i]);
}
}
return sqlQuery.list();
}
});
}
3. 修改正确后的代码:
List countList = dao.executeSelectSql(sqlCount);
Long typeValueCount = CastUtil.castLong(countList.get(0));
4. 为什么要转成BigDecimal?