繁体   English   中英

java.lang.ClassCastException:[Ljava.lang.Object; 不能转换为com.sakhnin.classes.MonthlySummary

[英]java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.sakhnin.classes.MonthlySummary

我正在尝试打印此MonthlyReport中的所有日期并获得此异常。

严重:servlet showMettingReports的Servlet.service()引发了异常java.lang.ClassCastException:[Ljava.lang.Object; 无法转发到org.apache.jsp.jspFiles.showMettingReports_jsp._jspService(howMettingReports_jsp.java:150)的com.sakhnin.classes.MonthlySummary org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)at位于org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)的javax.servlet.http.HttpServlet.service(HttpServlet.java:725)org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet。 java:396)org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)at org.apache.catalina.core.ApplicationFilterChain的javax.servlet.http.HttpServlet.service(HttpServlet.java:725) .internalDoFilter(ApplicationFilterChain.java:291)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)atg.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)org.apache.catalina.core.ApplicationFilterChain.doFilt 呃(ApplicationFilterChain.java:206)org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:721)org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:466)atg.apache .catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:391)atg.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:318)at com.sakhnin.implementations.Controller.doGet(Controller.java:140) )在javax.servlet.http.HttpServlet.service(HttpServlet.java:618)的javax.servlet.http.HttpServlet.service(HttpServlet.java:725)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain。 java:291)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)atg.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)org.apache.catalina .core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)org.apache.catalina.core.Ap plicationFilterChain.doFilter(ApplicationFilterChain.java:206)org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)atg.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)at org .apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:506)org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve) .java:79)org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)org.apache.catalina。 conne.CoyoteAdapter.service(CoyoteAdapter.java:537)org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1081)at org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:658)在org.apache.coyote.http11.Http11NioProtocol $ Http11Connection Handler.process(Http11NioProtocol.java:222)org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1566)org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.run( NioEndpoint.java:1523)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)

java.lang.ClassCastException:[Ljava.lang.Object; 不能转换为com.sakhnin.classes.MonthlySummary

MonthlySummary.java

public class MonthlySummary {
    @Id
    private String Date;
    private int Cost;
    private String Place;
    private String Start;
    private String End;
    private String Description;
    private int MentorID;

    public MonthlySummary() {
    // TODO Auto-generated constructor stub
    }


    public MonthlySummary(String place, String date, String start, String end,
        String description, int cost, int mentorID) {
    super();
    Place = place;
    Date = date;
    Start = start;
    End = end;
    Description = description;
    Cost = cost;
    MentorID = mentorID;
}

MonthlySummaryIMP.java

 public List<MonthlySummary> getMentorReportsById(int id) {
    List<MonthlySummary> reports=null;
    try{
    session = factory.openSession();
    session.beginTransaction();
    // Fetch all active coupons whose businesses' parent's category is as got in the argument
    SQLQuery query =  session.createSQLQuery("SELECT * FROM MonthlySummary WHERE MentorID="+id );
    reports = query.list();
    closeSession();
    }
    catch(HibernateException e){
        System.err.println(e.getMessage());
    }
    catch(Exception e){
        System.err.println(e.getMessage());
    }
    return reports;

}

jsp文件

<tbody>
  <%
    List<MonthlySummary> m = (List<MonthlySummary>)request.getSession().getAttribute("meetingsReports");

    for(MonthlySummary report : m) {
  %>

  <td>Date<%=report.getDate() %></td>
  <td>Date<%=report.getPlace()%></td>
  <td>Date<%=report.getStart()%></td>
  <td>Date<%=report.getEnd()%></td>
  <td>Date<%=report.getDescription() %></td>
  <td>Date<%=report.getCost()%></td>

  <%
    }
  %>
</tbody>

要避免此类ClassCastException ,您需要将Entity添加到查询对象中。 试试以下 -

SQLQuery query =  session.createSQLQuery("SELECT * FROM MonthlySummary WHERE MentorID="+id );

query.addEntity(MonthlySummary.class);

reports = query.list();
--rest of code

由于您的堆栈跟踪表明它试图转换List of MonthlySummary但实际上它无法理解左手对象来完成此过程。

这种奇怪的,因为如果你没有在第一手设置HTTPSession属性,它应该给你Null Pointer Exception。

你确定你没有使用该键设置任何属性,我的假设是你在该键中设置了一些其他对象。

请使用Sighr提到的技巧 ,这应该为你做出魔力。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM