2

In my struts2 project, I am using EclipseLink to call SQL Server procedure using StoredProcedureQuery.My problem is after getting the result list and casting it to the corresponding POJO class, it shows compilation error:

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.boban.UserForm

I know getResultList() method returns object array. My question is, is there any way to cast resultList to POJO class?

My program code

List<UserForm> userlist = new ArrayList<UserForm>();
        StoredProcedureQuery query = em.createStoredProcedureQuery("USP_GET_USERLIST");
        query.registerStoredProcedureParameter("P_CUSTOMER_ID", String.class, ParameterMode.IN);
        query.setParameter("P_CUSTOMER_ID", customerid);
        List<UserForm> result = query.getResultList();
        for (UserForm userForm : result) {
            userlist.add(userForm);
        }

EDIT:

my updated code

List result = query.getResultList();
        for (Object userObj : result) {
            userlist.add((UserForm) userObj);
        }

and the error:

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.boban.UserForm
at com.service.UserServiceImpl.retrieveUserList(UserServiceImpl.java:469)
at boban.admin.action.UserAction.retrieveUserList(UserAction.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 ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:891)
at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1293)
at ognl.ObjectMethodAccessor.callMethod(ObjectMethodAccessor.java:68)
at com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.callMethodWithDebugInfo(XWorkMethodAccessor.java:117)
at com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.callMethod(XWorkMethodAccessor.java:108)
at ognl.OgnlRuntime.callMethod(OgnlRuntime.java:1369)
at ognl.ASTMethod.getValueBody(ASTMethod.java:90)
at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
at ognl.SimpleNode.getValue(SimpleNode.java:258)
at ognl.Ognl.getValue(Ognl.java:494)
at ognl.Ognl.getValue(Ognl.java:458)
at com.opensymphony.xwork2.ognl.OgnlUtil$2.execute(OgnlUtil.java:309)
at com.opensymphony.xwork2.ognl.OgnlUtil.compileAndExecute(OgnlUtil.java:340)
at com.opensymphony.xwork2.ognl.OgnlUtil.getValue(OgnlUtil.java:307)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:423)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:287)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:250)
at org.apache.struts2.interceptor.DeprecationInterceptor.intercept(DeprecationInterceptor.java:41)
Roman C
  • 49,761
  • 33
  • 66
  • 176
Boban Thomas
  • 53
  • 1
  • 10
  • its an Object[] containing java primitive types, what is your UserForm, and how would you expect to cast it exactly? More information on what you are getting back and what you need should be given - if you want POJO objects built and returned from your data, you should look at the ConstructorResult of SqlResultSetMapping, which allows you to tell JPA how to build your POJO from the raw Object[] it would otherwise return – Chris Jan 24 '17 at 13:55

0 Answers0