您的位置:首页 > 编程语言 > Java开发

java开源框架集成常见错误之使用Criteria添加查询条件出现java.lang.ClassCastException异常

2009-08-04 13:38 781 查看
问题描述:
使用Criteria添加查询条件criteria.add(Restrictions.eq("chcDueId", pageResult.getCondition().getMcuser()));
出现如下异常
javax.servlet.ServletException: java.lang.ClassCastException: java.lang.String
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.crm.filter.LoginFilter.doFilter(LoginFilter.java:55)
com.crm.filter.MyFilter.doFilter(MyFilter.java:19)

root cause

java.lang.ClassCastException: java.lang.String
org.hibernate.type.LongType.set(LongType.java:42)
org.hibernate.type.NullableType.nullSafeSet(NullableType.java:83)
org.hibernate.type.NullableType.nullSafeSet(NullableType.java:65)
org.hibernate.loader.Loader.bindPositionalParameters(Loader.java:1513)
org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1575)
org.hibernate.loader.Loader.doQuery(Loader.java:661)
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:224)
org.hibernate.loader.Loader.doList(Loader.java:2144)
org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2028)
org.hibernate.loader.Loader.list(Loader.java:2023)
org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:95)
org.hibernate.impl.SessionImpl.list(SessionImpl.java:1569)
org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283)
com.crm.common.CommonDaoImpl.listByPage(CommonDaoImpl.java:170)
com.crm.dao.impl.SalChanceDaoImpl.getSalChanceByPageCst(SalChanceDaoImpl.java:92)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
$Proxy5.getSalChanceByPageCst(Unknown Source)
com.crm.biz.impl.SalChanceBizImpl.getSalChanceByPageCst(SalChanceBizImpl.java:48)
com.crm.web.action.SalChanceActionList.doPageListCst(SalChanceActionList.java:87)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:270)
org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:187)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.crm.filter.LoginFilter.doFilter(LoginFilter.java:55)
com.crm.filter.MyFilter.doFilter(MyFilter.java:19)

异常原因:
调用方法criteria.add(Restrictions.eq("chcDueId", pageResult.getCondition().getMcuser()))时
chcDueId在实体类里面是Long型的,而通过pageResult.getCondition().getMcuser()方法得到的是String类型的

解决方法:
把pageResult.getCondition().getMcuser()转换为Long型,即:
criteria.add(Restrictions.eq("chcDueId", new Long(pageResult.getCondition().getMcuser())));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐