2013-04-17 47 views
0

我的代碼是java.lang.ClassCastException:java.util.ArrayList中不能轉換到.... CrExcessMaster

private List find(String queryString) { 
    final Query query = getSession().createQuery(queryString.intern()); 
    List resultSet = query.list(); 
    return resultSet; 
} 
@SuppressWarnings("rawtypes") 
public List <CrExcessMaster> getExcessesWidget(String primaryCO) { 
    List cifList = find("select cem.id.cifNumber from CrEntitymaster cem where cem.primaryCo='" + primaryCO + "'"); 
    List <CrExcessMaster> temp = null; 
    for (int i = 0; i < cifList.size(); i++) { 
     log.info("cifList in dao " + cifList); 
     if (i == 0) { 
      temp = find("from CrExcessMaster where cif='" + cifList.get(i) + "'"); 
     } else temp.add((CrExcessMaster) find("from CrExcessMaster where cif='" + cifList.get(i) + "'")); 
    } 
    return temp; 
} 

其中crExcessMaster是一個表,我需要顯示變量temp值... 但是當我嘗試上述返回值來調用如下

public static FilteredUIExcessList formatCustomerExcessUiBean(List <CrExcessMaster> crExcessMasterList) { 
if (crExcessMasterList != null) { 
    FilteredUIExcessList filteredUIExcessList = new FilteredUIExcessList(); 
    < font color = red > 
    for (CrExcessMaster crExcessMaster: crExcessMasterList) < /font>{ 
     ExcessUIBean excessUIBean = new ExcessUIBean(); 
     excessUIBean.setCurrency(crExcessMaster.getCurrency()); 
} 

在代碼以紅色突出顯示,它拋出classcast異常

java.lang.ClassCastException: java.util.ArrayList cannot be cast to cib.ecm.creditRisk.excessManagement.db.orm.CrExcessMaster 

完整的堆棧跟蹤是

java.lang.ClassCastException:java.util.ArrayList中不能cib.ecm.creditRisk.excessManagement.web被轉換爲cib.ecm.creditRisk.excessManagement.db.orm.CrExcessMaster 。 uiFormatters.UIBeanFormatter.formatCustomerExcessUiBean(UIBeanFormatter.java:65) at cib.ecm.creditRisk.excessManagement.web.services.ExcessManagementUiService.getExcessesWidget(ExcessManagementUiService.java:52) at cib.ecm.creditRisk.excessManagement.web.action。 ExcessListActionBean.getExcessesWidget(ExcessListActionBean.java:105) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(來源不明) 在java.lang.reflect.Method.invoke(來源不明) 在net.sourceforge.stripes.controller.DispatcherHelper $ 6.intercept(DispatcherHelper.java:442) at net.sourceforge.stripes.controller.ExecutionContext.proceed(ExecutionContext.java:158) at net.sourceforge.stripes.controller.BeforeAfterMethodInterceptor.intercept(BeforeAfterMethodInterceptor.java:113) at net.sourceforge.stripes.controller.ExecutionContext .net.sourceforge.stripes.controller.DispatcherHelper.invokeEventHandler(DispatcherHelper.java:440) (ExecutionContext.java:155) at net.sourceforge.stripes.controller.ExecutionContext.wrap(ExecutionContext.java:74)在net.sourcefor在net.sourceforge.stripes.controller.DispatcherServlet.doPost(DispatcherServlet.java:167) at net.sourceforge.stripes.controller.DispatcherServlet.doGet(DispatcherServlet.java:285)(HttpServlet.java:820) at org.mortbay.jetty。 servlet.ServletHolder.handle(ServletHolder.java:511) at org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1221) at net.sourceforge.stripes.controller.StripesFilter.doFilter(StripesFilter。 java:246) at org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1212) 在cib.ecm.creditRisk.excessManagement.web.filter.HibernateSessionRequestFilter.doFilter(HibernateSessionRequestFilter.java:35) 在org.mortbay.jetty.servlet.ServletHandler $ CachedChain.doFilter(ServletHandler.java:1212) 的組織。 mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle( SessionHandler.java:182) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450) at org。 mortgay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230) at org。mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) 在org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 在org.mortbay.jetty.Server.handle(服務器。 Java的:326) 在org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 在org.mortbay.jetty.HttpConnection $ RequestHandler.headerComplete(HttpConnection.java:928) 在org.mortbay.jetty。 HttpParser.parseNext(HttpParser.java:549) 在org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) 在org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 的組織。 mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410) at org.mortbay.thread.QueuedThreadPool $ PoolThread.run(Q ueuedThreadPool.java:582)

+0

Full stacktrace? – NINCOMPOOP

+0

你確定你將'CrExcessMaster'的'List'傳遞給'formatCustomerExcessUiBean()'嗎? – NINCOMPOOP

+0

爲什麼你壓制潛在的警告? – NINCOMPOOP

回答

3

的問題是這一行:

} else temp.add((CrExcessMaster) find("from CrExcessMaster where cif='" + cifList.get(i) + "'")); 

有了這個,你要添加Listtemp,至極將在後面造成ClassCastException。請致電temp.addAll(),而不是temp.add()

+0

謝謝..它工作 – user2265200

+0

@ user2265200不客氣。接受&upvote會很好;) – skirsch

相關問題