2013-05-06 69 views
0

我有一个对象,我想要检索,而不仅仅是对象,但关联的子对象。弹簧 - 将对象投出对象

控制器,其中,如果我做这样的事情:

  List<UserEntity> u = (List<UserEntity>) userService.getUserByID(userId); 
     List<UserEntityDTO> userDTO = (List<UserEntityDTO>) new UserEntityDTO(); 

     for (UserEntity user: u) { 


      UserEntityDTO dto = new UserEntityDTO(); 

      dto.setUserId(user.getUserId()); 
      dto.setsModule(moduleService.getSetterModules(user.getUserId())); 
      dto.setcModule(moduleService.getCheckerModules(user.getUserId())); 

      userDTO.add(dto); 

     } 

     map.addAttribute("setter", userDTO); 

存在错误

java.lang.ClassCastException: com.myproject.app.model.UserEntity cannot be cast to java.util.List 
com.myproject.app.controller.UserController.getSetPage(UserController.java:320) 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
java.lang.reflect.Method.invoke(Method.java:601) 
org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:219) 
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132) 
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104) 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:746) 
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:687) 
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80) 
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925) 
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856) 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:915) 
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:811) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:621) 
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:796) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330) 
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:118) 
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:84) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:103) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
org.springframework.security.web.authentication.ui.DefaultLoginPageGeneratingFilter.doFilter(DefaultLoginPageGeneratingFilter.java:91) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:183) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) 
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) 
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) 
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259) 

我想一些洞察获取对象和关联的持久组的正确方法。或者是有另一种更直接的方式,那么我会欣赏指针。

+0

哦,男孩,又一个又长又无用的堆栈跟踪......(我在处理我的代码时看到很多这样的人,而且几乎总是框架底部的框架完全没用,除了偶尔遇到某些事情时非常错误的框架本身。) – 2013-05-06 07:06:35

回答

0

我认为错误是在这条线抛出:

List<UserEntity> u = (List<UserEntity>) userService.getUserByID(userId); 

userService.getUserByID(userId)可能返回UserEntity单个实例。所以,如果你想有一个列表,你必须把它包起来是这样的:

List<UserEntity> u = new ArrayList<UserEntity>(); 
u.add(userService.getUserByID(userId)); 

同样的问题也出现在第二行,你试图通过亚历克斯指出投下的UserEntityDTO实例List。你必须把它包起来以同样的方式:

List<UserEntityDTO> userDTO = new ArrayList<UserEntityDTO>(); 
userDTO.add(new UserEntityDTO()); 

但我怀疑你真的想要的UserEntityDTO增加新的空实例到列表中,那么可以跳过第二行。
我也怀疑你真的需要在列表中包装这些实体和DTO对象。

+0

我已经完成了。非常感谢。这几天来一直是个问题。为了获得关联的对象,我确实需要将DTO对象包装到列表中。非常感谢。 – user2259555 2013-05-06 07:12:47

0

这是不正确的:(List) new UserEntityDTO()
应该

List<UserEntityDTO> list = new ArrayList<UserEntityDTO>(); 
list.add(new UserEntityDTO()); 
+0

谢谢你为我提供列表上的指针。我很感激。 – user2259555 2013-05-06 07:13:27