在hibernate 4中使用投影时的java.lang.ClassCastException

在hibernate 4中使用投影时的java.lang.ClassCastException,java,spring,hibernate,criteria-api,Java,Spring,Hibernate,Criteria Api,我使用hibernate只从和实体获取特定字段。为此,我使用标准API和投影。当我尝试遍历Criteria API的list()方法返回的列表时,我得到了ClassCastXceTablen 请帮我找出下面代码的缺失 @RequestMapping("/pResult") public String retrieveLpnOnPagination(Model model) { for (int i = 1; i <= 9; i += 3) { List<My

我使用hibernate只从和实体获取特定字段。为此,我使用标准API和投影。当我尝试遍历Criteria API的list()方法返回的列表时,我得到了ClassCastXceTablen

请帮我找出下面代码的缺失

@RequestMapping("/pResult")
public String retrieveLpnOnPagination(Model model) {

    for (int i = 1; i <= 9; i += 3) {
        List<MyLpn> lpns = lpnService.retrievePaginatedResult(i, 3,new String[]{"lpnId","status","whse"});
        for (MyLpn lpn : lpns)
            System.out.println(lpn.toString());
        System.out.println();
    }
    return "home";
}
@RequestMapping(“/pResult”)
公共字符串检索未分页(模型){
对于(inti=1;i试试这个

createCriteria.setResultTransformer(Transformers.aliasToBean(MyLpn.class));
List<MyLpn> list = createCriteria.list();
createCriteria.setResultTransformer(Transformers.aliasToBean(MyLpn.class));
List List=createCriteria.List();

当然失败了。您使用了一个投影。因此,您现在不是获取
MyLpn
而是获取投影结果。在您的例子中,投影结果是一个包含投影字段的对象[]。
SEVERE: Servlet.service() for servlet [spring] in context with path [/MyW2014] threw exception [Request processing failed; nested exception is java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.w.model.MyLpn] with root cause
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.w.model.MyLpn
    at com.wmos.dao.LpnDaoImpl.retrievePResult(LpnDaoImpl.java:88)
    at com.w.service.LpnService.retrievePaginatedResult(LpnService.java:43)
    at com.wmos.service.LpnService$$FastClassBySpringCGLIB$$4e814eab.invoke(<generated>)
    at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
    at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:720)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
    at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:655)
    at com.wmos.service.LpnService$$EnhancerBySpringCGLIB$$bec224d4.retrievePaginatedResult(<generated>)
    at com.wmos.controller.LpnController.retrieveLpnOnPagination(LpnController.java:57)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:222)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:814)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:737)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:969)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:860)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:845)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    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:219)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:494)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:1025)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1136)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Unknown Source)
createCriteria.setResultTransformer(Transformers.aliasToBean(MyLpn.class));
List<MyLpn> list = createCriteria.list();