报错提示Hibernate: select bulletin0_.id as x0_0_ from BULLETIN bulletin0_
java.lang.ClassCastException
        at meis.tag.Bulletin_tag.doAfterBody(Bulletin_tag.java:48)
        at jsp_servlet.__index._jspService(__index.java:202)
        at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)
        at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run
(ServletStubImpl.java:1006)
        at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm代码 Query query=session.createQuery("select b.id from meis.hibernate.Bulletin as b");
 
java.util.List list=query.list();

result.append("<TABLE width=\"97%\"  border=\"0\" cellspacing=\"6\" cellpadding=\"0\"><tr><td>dfdsfsdf"+list.size()+"</td></tr>");

Iterator iter = list.iterator();

while (iter.hasNext()) 
{
.....
}
/*
*/

映射类文件
package meis.hibernate;public class Bulletin {
//发布日期

private String id; private String issuedate;
private String title;

public String getId()

  return id; 

public void setId(String id) 

  this.id = id; 
}

public String  getIssuedate()

  return issuedate; 


public void setIssuedate(String issuedate) 

  this.issuedate = issuedate; 


public String getTitle()

  return title; 

public void setTitle(String title) 

  this.title = title; 
}}配置文件<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping  PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping>
    <class name="meis.hibernate.Bulletin" table="BULLETIN">
        <id name="id">
            <generator class="assigned" />
        </id>
        <property name="issuedate" /> 
        <property name="title" /> 
    </class> </hibernate-mapping>

解决方案 »

  1.   

    这样写没有报错  
    Query query=session.createQuery("select bull from Bulletin as bull");   Hibernate: select bulletin0_.id as id, bulletin0_.issuedate as issuedate, bullet  
    in0_.title as title from BULLETIN bulletin0_  
    只要加上字段,如这样,就报错了  
    Query query=session.createQuery("select bull.id from Bulletin as bull");   报错如下  
    Hibernate: select bulletin0_.id as x0_0_ from BULLETIN bulletin0_  
    java.lang.ClassCastException  
            at meis.tag.Bulletin_tag.doAfterBody(Bulletin_tag.java:48)  
            at jsp_servlet.__index._jspService(__index.java:202)  
            at weblogic.servlet.jsp.JspBase.service(JspBase.java:33)  
            at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run  
    (ServletStubImpl.java:1006)  
            at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm  
    pl.java:419)  
      

  2.   

    while (iter.hasNext()) 
    {
    .....

    把其中的内容发上来
      

  3.   

    while (iter.hasNext()) 
    {
    result.append("<TR>");
    meis.hibernate.Bulletin bulletin=(meis.hibernate.Bulletin)iter.next();
    result.append("<TD width=\"100%\" height=\"21\">");
    result.append("<span class=\"style8\"><img src=\"pic/bugle.gif\" width=\"11\" height=\"11\"><a href=\"#\">"+bulletin.getTitle()+"</a></span>");
    result.append("</TD>");
    result.append("</TR>");
    }
      

  4.   

    你用到最bulletin.getTitle(),
    刚才我在那个贴子中不是说了吗?
    ava.util.List list=query.list(); 中返回的不是Bulletin对象。所以才错了
    一会帮你解决吧
      

  5.   

    用数组来解决吧Object[] bulletin= (Object[]) iter.next(); bulletin[0]bulletin[1]
      

  6.   

    meis.hibernate.Bulletin bulletin=(meis.hibernate.Bulletin)iter.next(); 
    转型错误
      

  7.   

    mxm_1123 谢谢,我应该怎么查询数据
      

  8.   

    两种解决方案:
    一。
    Query query=session.createQuery("from Bulletin");
     
    java.util.List list=query.list();result.append(" <TABLE width=\"97%\"  border=\"0\" cellspacing=\"6\" cellpadding=\"0\" > <tr > <td >dfdsfsdf"+list.size()+" </td > </tr >");Iterator iter = list.iterator();while (iter.hasNext()) 
    {
    result.append(" <TR >");
    meis.hibernate.Bulletin bulletin=(meis.hibernate.Bulletin)iter.next();
    result.append(" <TD width=\"100%\" height=\"21\" >");
    result.append(" <span class=\"style8\" > <img src=\"pic/bugle.gif\" width=\"11\" height=\"11\" > <a href=\"#\" >"+bulletin.getTitle()+" </a > </span >");
    result.append(" </TD >");
    result.append(" </TR >");
    }
    二、Query query=session.createQuery("select b.title from Bulletin as b");
     
    java.util.List list=query.list();result.append(" <TABLE width=\"97%\"  border=\"0\" cellspacing=\"6\" cellpadding=\"0\" > <tr > <td >dfdsfsdf"+list.size()+" </td > </tr >");Iterator iter = list.iterator();while (iter.hasNext()) 
    {
    result.append(" <TR >");
    String title=iter.next().toString();
    result.append(" <TD width=\"100%\" height=\"21\" >");
    result.append(" <span class=\"style8\" > <img src=\"pic/bugle.gif\" width=\"11\" height=\"11\" > <a href=\"#\" >"+title+" </a > </span >");
    result.append(" </TD >");
    result.append(" </TR >");
    }
      

  9.   

    while (iter.hasNext())  

    result.append(" <TR >"); 
    meis.hibernate.Bulletin bulletin=(meis.hibernate.Bulletin)iter.next(); 
    result.append(" <TD width=\"100%\" height=\"21\" >"); 
    result.append(" <span class=\"style8\" > <img src=\"pic/bugle.gif\" width=\"11\" height=\"11\" > <a href=\"#\" >"+bulletin.getTitle()+" </a > </span >"); 
    result.append(" </TD >"); 
    result.append(" </TR >"); 
    }这里这么用,~~~~~~Query query=session.createQuery("select b from meis.hibernate.Bulletin as b"); 这两边要保持一致~~~~~~~~~
      

  10.   

    Query query=session.createQuery("select b.id from meis.hibernate.Bulletin as b");
    java.util.List list=query.list(); 中返回的不是Bulletin对象
    好好对比一下!
      

  11.   

    另一种改法:
    Query query=session.createQuery("select b.id,b.title from meis.hibernate.Bulletin as b");  ============================================while (iter.hasNext())   
    {  
    result.append("  <TR  >");  
    Object[] os=(Object[])iter.next();  
    result.append("  <TD width=\"100%\" height=\"21\"  >");  
    result.append("  <span class=\"style8\"  >  <img src=\"pic/bugle.gif\" width=\"11\" height=\"11\"  >  <a href=\"#\"  >"+os[1]+"  </a  >  </span  >");  
    result.append("  </TD  >");  
    result.append("  </TR  >");  
    }
      

  12.   

    karlpan01 说到:
    Query query=session.createQuery("select b.id from meis.hibernate.Bulletin as b");
    java.util.List list=query.list(); 中返回的不是Bulletin对象
    好好对比一下!
    就是这个答案了。你的list里面现在放的是一些id,比如{1,2,3,4},而不是bulletin的对象{bulletin1,bulletin2,bulletin3,bulletin4}.所以在结果list面的元素是不能用  getId()获是getTitle()这些方法的。
      

  13.   

    Query query=session.createQuery("select b.id from meis.hibernate.Bulletin as b"); 
    java.util.List list=query.list();
    这样返回的是id数组,而
    meis.hibernate.Bulletin bulletin=(meis.hibernate.Bulletin)iter.next();  这个强制转换肯定就出错了,如下改法:
    Query query=session.createQuery("select b.id from meis.hibernate.Bulletin as b");改成Query query=session.createQuery("select b from meis.hibernate.Bulletin as b");  
      

  14.   

    谢谢各位了,我明白了
    一直以为是出在HQL语句上。
      

  15.   

    若你想取部分字段的话,取出来的是List中每个单元里一个对象数组,每个数组其实就是一行记录。例如可以这样:
    List ls = session.createQuery("select er.employerid,et.employmentid,et.startDate from Employer er left join er.employments as et")
       .list(); for (Iterator itr = ls.iterator(); itr.hasNext(); )
    {
    Object[] oo = (Object[])itr.next();
    for (int i = 0;i < oo.length ;i++ )
    {
    System.out.println(oo[i]);
    }
    System.out.println("====================");
    }
      

  16.   

    个人认为 问题出在这里:session.createQuery("select new Bulletin(id) from Bulletin");pojo中pubilc Bulletin(String id){
        this.id = id;
    }
      

  17.   

    貌似来晚了 
    java.lang.ClassCastException 是 JVM 在检测到两个类型间的转换不兼容时引发的运行时异常Query query=session.createQuery("select b.id from meis.hibernate.Bulletin as b");[color=#FF0000]meis.hibernate.Bulletin bulletin=(meis.hibernate.Bulletin)iter.next();[/color]类型不同啊~
      

  18.   


    id 应该是一个 基本数据类型的 ,你可以直接输出 
    不需要 进行类型转换 
    Iterator iter = list.iterator();  while (iter.hasNext())   
    {  
      System.out.println(iter.next()); 
      

  19.   

    改成这样
    Query query=session.createQuery("select b from meis.hibernate.Bulletin as b"); 
      

  20.   

    用一java bean 把数据封装起来就好拉!然后一循环不就解决了吗?