【问题标题】:java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.sx.mcqs.modeljava.lang.ClassCastException:[Ljava.lang.Object;无法转换为 com.sx.mcqs.model
【发布时间】:2012-08-07 12:04:57
【问题描述】:
questions=dao.getNamedQueryResultList("getUnansweredQuestionsByCategory", new Object[]{strUser});



    for(Question selectedResumes:questions) {
          //do something with the SelectedResumes object
        System.out.println("Unanswered::"+selectedResumes.getQuestion());
    }

================================================ =======================-

以下错误即将到来:

java.lang.ClassCastException: [Ljava.lang.Object;不能转换为 com.sx.mcqs.model.Question 在 com.sx.mcqs.service.QuestionService.findRelatedQuestionsGame(QuestionService.java:142) 在 com.sx.mcqs.service.QuestionService$$FastClassByCGLIB$$cd78275c.invoke() 在 net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191) 在 org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:689) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150) 在 org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172) 在 org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:622) 在 com.sx.mcqs.service.QuestionService$$EnhancerByCGLIB$$f6d3276_2.findRelatedQuestionsGame() 在 com.sx.mcqs.controller.QuestionController.selectcategory(QuestionController.java:182) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:212) 在 org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126) 在 org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96) 在 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617) 在 org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578) 在 org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) 在 org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900) 在 org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:827) 在 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882) 在 org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.springframework.web.filter.ShallowEtagHeaderFilter.doFilterInternal(ShallowEtagHeaderFilter.java:58) 在 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 com.sx.mcqs.filter.GzipFilter.doFilter(GzipFilter.java:86) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:147) 在 org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 com.sx.mcqs.filter.UserSessionFilter.doFilter(UserSessionFilter.java:62) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309) 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 在 java.lang.Thread.run(Thread.java:619)

【问题讨论】:

    标签: hibernate


    【解决方案1】:

    上面的代码假定命名查询返回一个问题列表,但它返回一个对象数组。要返回问题列表,查询应如下所示

    select question from Question question ...
    

    但查询可能看起来像

    select question.foo, question.bar, ...
    

    没有看到执行的查询,很难给出更详细的答案。

    【讨论】:

    • @NamedQuery(name="getUnansweredQuestionsByCategory", query="SELECT q.id From Question q left outer join q.internalUserAnswers ua join q.internalQuestionCategories qc where qc.category.id= ?")
    • 抱歉耽搁了。我在度假。你的评论证实了我的回答。您正在选择问题的 ID。不是问题。查询应该是“从问题 q 中选择 q ...”。
    猜你喜欢
    • 2014-07-08
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 2015-10-18
    • 2014-05-09
    • 2015-02-01
    • 1970-01-01
    相关资源
    最近更新 更多