java.lang.ClassCastException:[Ljava.lang.Object;无法强制转换为com.bdisys.promorphics.domain.Blog
这是一个非常重要的问题,我被打动了…如果有人能回答它,这将是非常值得赞赏的 错误消息:java.lang.ClassCastException:[Ljava.lang.Object;无法强制转换为com.bdisys.promorphics.domain.Blog,java,sql,hibernate,jsp,hql,Java,Sql,Hibernate,Jsp,Hql,这是一个非常重要的问题,我被打动了…如果有人能回答它,这将是非常值得赞赏的 错误消息: Feb 19, 2014 6:56:08 PM org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet jsp threw exception java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com
Feb 19, 2014 6:56:08 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet jsp threw exception
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.bdisys.promorphics.domain.Blog
at org.apache.jsp.Mydetails_jsp._jspService(Mydetails_jsp.java:951)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:381)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Unknown Source)
Details of blogs are===[[Ljava.lang.Object;@18fc85, [Ljava.lang.Object;@6a86fe, [Ljava.lang.Object;@1c49309, [Ljava.lang.Object;@9160e3, [Ljava.lang.Object;@6fecea, [Ljava.lang.Object;@2b0e77, [Ljava.lang.Object;@c2c269, [Ljava.lang.Object;@699ec3, [Ljava.lang.Object;@363c6c, [Ljava.lang.Object;@b9141c, [Ljava.lang.Object;@d75341, [Ljava.lang.Object;@9af4bc, [Ljava.lang.Object;@1399537, [Ljava.lang.Object;@173640c, [Ljava.lang.Object;@ad799a, [Ljava.lang.Object;@10aa63a, [Ljava.lang.Object;@274a2b, [Ljava.lang.Object;@1767836, [Ljava.lang.Object;@ce5230, [Ljava.lang.Object;@175fbe3]
DaoImpl方法:
这是我的Dao方法,我在其中执行sql查询并将对象列表返回到jsp页面以进行打印
public List<Blog> getTopBlogsQuesByDate()throws Exception {
List<Blog> blogs = new ArrayList<Blog>(0);
try{
String sql = "select title , date from (select blog_title as title ,created_date as date from blog union select ask_question as title , created_on as date from askquestions ) as aa order by date desc";
SQLQuery query = getSession().createSQLQuery(sql);
return query.list();
}
catch(Exception e){
e.printStackTrace();
}finally{
closeSession();
}
return blogs;
}
Jsp:
这里我使用sql查询获取两个表的数据,但是我应该如何在我的jsp中打印值列表????它显示classcast异常?????如果任何人都能回答它,这将是非常可观的!!提前感谢
<tr>
<td style="border: 2px dotted #FFFFFF; border-radius:5px; background-color:#f3ecf0;">
<%
List<Blog> blog2 =new ArrayList<Blog>();
BlogDaoImpl blogDaoImpl1=new BlogDaoImpl();
blog2=blogDaoImpl1.getTopBlogsQuesByDate();
System.out.println(" Details of blogs are==="+blog2);
%>
<ul style="text-align: left; left:0px;font-size: 13px; margin-left:-20px; overflow-y: scroll; height:465px; list-style:url('images/arrows.png'); font-family:Palatino Linotype; color:#2a2a2a; border: 0px solid #d4d4d4" >
<%
for(int i=0;i<blog2.size();i++){
Blog blogs1=new Blog();
blogs1=blog2.get(i);
System.out.println("blogs size is===="+blog2.size());
blogs1.getId();
String paths="showblog/"+ blogs1.getBlogTitle()+"/"+blogs1.getId();
%>
<li style="border-bottom : 2px dotted #FFFFFF; margin-bottom: 10px;"><%=blogs1.getBlogText() %></li>
<%} %>
</ul>
</td>
</tr>
Hibernate处理字段子集返回的方式是将它们存储在对象[]中。这是处理N个不同类型字段的最佳常用上限。最坏情况下:所有字段都不同。由于您的方法返回列表,因此第一个返回语句return query.List将返回一个列表,从而导致异常 您应该直接选择Blog实体(如果存在此类实体),或者迭代每个结果,并将每个对象[]中收集的数据存储到Blog实例中,然后将其添加到返回列表中 编辑2 我很好奇,在没有列表迭代、实例创建和基本列表处理的基础知识的情况下,您是如何完成这项任务的……我正在添加伪代码以进一步帮助您
databaseList = query.list()
iterator = obtain iterator from databaseList
while the iterator has elements
obtain element
create new Blog
set blog data
add blog to "blogs" list
然后,该列表将由方法末尾的return blogs;行返回。请注意,Hibernate返回Object[]数组的列表,数组的类型为Object,其中每个Object[]表示返回的记录。这些数组按所选列的顺序包含所选列的值。在您的情况下,它们将有两个元素,即按特定顺序排列的博客标题和日期。在getTopBlogsQuesByDate方法中有两个返回语句,其中一个可能不存在。您喜欢我希望迭代您的结果,创建Blog实例并将其添加到blogs方法变量中,最后在方法末尾返回。我从两个表“blogs”和“askquestions”获取数据,并将其返回到jsp,获取控制台中显示的所有对象。但我无法在jsp中打印它们。这就是例外情况是否正在发生……您现在应该已经熟悉了所有内容,如果还不熟悉,我建议您阅读规范,或者至少阅读您使用的方法的Javadoc。对于这种情况,它相当简单,并且与语言无关。我将为您提供一种教育方法,让您了解您应该做什么,而不是填鸭式输入g请记住代码,因为如果下次没有人出现,您可以在block中再呆一周。我添加了伪代码和Hibernate用于返回数据的结构的简要说明。@SalmanAmaan不会修改答案来询问更多问题或详细说明您的问题/要求。谢谢。@SalmanAmaan博客中的数据是存储的在每个对象上[]包含在列表中。当您使用本机查询时,映射不是问题。您的问题集中在您遇到的异常以及如何避免它上,迭代不是我回答的中心,它是一个特别的提示,说明如何解决异常问题,而不是按照您的要求对代码进行必要的更改如果您需要进一步的数据更新select查询,ata就在那里。新字段将作为附加元素添加到数组中。@SalmanAmaan Plus,我可以说问题在于您没有得到答案的关键概念:迭代,是的,但要将每个对象[]转换为Blog,以便您的方法返回正确的类型。