Session session = sf.openSession();
    session.beginTransaction();
    Query q = (Query) session.createQuery("select prog.program_version from ProgramClass prog where       prog.program_title='"
   + this.jTxt_search.getText() + "'");

   List<ProgramClass> objects = (List<ProgramClass>) ((org.hibernate.Query) q).list();
   List list = new ArrayList();

   for (ProgramClass prog : objects) {

   System.out.println(prog.getProgram_title());
   list.add(prog.getProgram_title());   this.jList_title.setForeground(Color.red);
   this.jList_title.setListData(list.toArray());
   }执行后报java.lang.String cannot be cast to DatabaseADO_TablesJavabean.ProgramClass的错误。
我知道要改类型,但是不知道怎么改,请高手帮忙下,谢谢了。。

解决方案 »

  1.   

    select   prog.program_version   from   ProgramClass   这是投影查询,
      List <ProgramClass>   objects   =   (List <ProgramClass> )   ((org.hibernate.Query)   q).list();这句就不对吧。
    查询出来的结果应该是数组的集合才对吧。
      

  2.   

    List <ProgramClass>   objects   =   (List <ProgramClass> )   ((org.hibernate.Query)   q).list();
    返回的是一个Object的List,好像不能直接这样进行强制类型转换。
    List objects = ((org.hibernate.Query)   q).list();我一般的用法是:Iterator iter = q.list().iterator();
    while (iter.hasNext()) {
        ProgramClass obj = (ProgramClass) iter.next();
        // ........
    }
      

  3.   

    ( "select   prog.program_version   from   ProgramClass   prog   where               prog.program_title= ' "
          +   this.jTxt_search.getText()   +   " ' "); 改( " from   ProgramClass   prog   where               prog.program_title= ' "
          +   this.jTxt_search.getText()   +   " ' ");