0

In database datatype of empcode is defined as decimal.

This code:

 public  KwlReturnObject getPayrollDataHrms(HashMap<String, Object> requestParams)
     {  

     boolean success = false;
        List lst = null;
        KwlReturnObject result = null;
        try {
            ArrayList name = null;
            String hql = "";
            ArrayList value = null;
            ArrayList orderby = null;
            ArrayList ordertype = null;
            String[] searchCol = null;
            if ((requestParams.containsKey("primary"))
                    && (((Boolean) requestParams.get("primary")).booleanValue())) {
                hql = "from PayrollDataDisp where empcode=?";
                String userid = requestParams.get("userid").toString();

                System.out.println("userid:"+userid);
                lst = HibernateUtil.executeQuery(this.hibernateTemplate, hql,
                        new Object[] { userid });

                if(lst!=null){
                result = new KwlReturnObject(success, "success", "", lst,
                        lst.size());
                }
                KwlReturnObject localKwlReturnObject1 = result;
                return result;
            }

            success = true;

        //  return result;
        } catch (Exception ex) {
            success = false;

        //  return result;
        } finally {
        }
        return result;


 }

generates following stack trace:

java.lang.ClassCastException: java.lang.String cannot be cast to java.math.BigDecimal
    at org.hibernate.type.BigDecimalType.set(BigDecimalType.java:51)
    at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:154)
    at org.hibernate.type.NullableType.nullSafeSet(NullableType.java:136)
    at org.hibernate.param.PositionalParameterSpecification.bind(PositionalParameterSpecification.java:62)
    at org.hibernate.loader.hql.QueryLoader.bindParameterValues(QueryLoader.java:514)
    at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1589)
    at org.hibernate.loader.Loader.doQuery(Loader.java:696)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
    at org.hibernate.loader.Loader.doList(Loader.java:2228)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2125)
    at org.hibernate.loader.Loader.list(Loader.java:2120)
    at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401)
    at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:361)
    at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1148)
    at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
    at org.springframework.orm.hibernate3.HibernateTemplate$30.doInHibernate(HibernateTemplate.java:921)
    at org.springframework.orm.hibernate3.HibernateTemplate$30.doInHibernate(HibernateTemplate.java:1)
    at org.springframework.orm.hibernate3.HibernateTemplate.doExecute(HibernateTemplate.java:406)
    at org.springframework.orm.hibernate3.HibernateTemplate.executeWithNativeSession(HibernateTemplate.java:374)
    at org.springframework.orm.hibernate3.HibernateTemplate.find(HibernateTemplate.java:912)
    at com.krawler.esp.hibernate.impl.HibernateUtil.executeQuery(HibernateUtil.java:421)
    at com.krawler.spring.hrms.common.hrmsCommonDAOImpl.getPayrollDataHrms(hrmsCommonDAOImpl.java:1744)
    at com.krawler.spring.hrms.common.hrmsCommonController.getPayrollData(hrmsCommonController.java:1686)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.krawler.common.wrapper.generalController.getData(generalController.java:101)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.springframework.web.servlet.mvc.multiaction.MultiActionController.invokeNamedMethod(MultiActionController.java:471)
    at org.springframework.web.servlet.mvc.multiaction.MultiActionController.handleRequestInternal(MultiActionController.java:408)
    at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
    at com.krawler.esp.handlers.sessionAdvisor.invoke(sessionAdvisor.java:45)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    at com.sun.proxy.$Proxy7.handleRequest(Unknown Source)
    at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:745)
4
  • Show stacktrace and exactly what line of code. Commented Aug 17, 2015 at 7:23
  • java.lang.ClassCastException: java.lang.String cannot be cast to java.math.BigDecimal Commented Aug 17, 2015 at 7:23
  • 1
    Add the complete stacktrace please. Commented Aug 17, 2015 at 7:23
  • datatype of "what" is bigdecimal? Check your data types and their conversions. See if you're trying to map string to a bigdecimal somewhere. Commented Aug 17, 2015 at 7:38

2 Answers 2

3

In:

lst = HibernateUtil.executeQuery(this.hibernateTemplate, hql,
                    new Object[] { userid });

you are passing userid which is a String instance. Try to convert it to BigDecimal:

lst = HibernateUtil.executeQuery(this.hibernateTemplate, hql,
                    new Object[] { new BigDecimal(userid) });

You need to strip all commas from the number.

Sign up to request clarification or add additional context in comments.

Comments

1

You are getting the userId with a requestParams.get() as a String here:

String userid = requestParams.get("userid").toString();

And in the executeQuery the expected userId is of type BigDecimal, because as it appears it's the type of your userId in your entity, which is very strange here because I don't see the use of BigDecimal for an id, int or Integer are more suitable types in the case of an id.

So anyway the solution to avoid this Exception is to convert the userId to a BigDecimal with new BigDecimal(userId.replaceAll(",","")), your code should be:

lst = HibernateUtil.executeQuery(this.hibernateTemplate, hql,
                new Object[] { new BigDecimal(userid.replaceAll(",","")) });

And keep in mind the importance of .replaceAll(",","") to avoid String format Exceptions, take a look at How can i parse a String to BigDecimal? for further information.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.