本人用S2SH做一个小项目,现在想查表中的部分字段
于是在Service中这么写:
public List findFilmInfoByName(String filmName) {
Session session = filmDAO.getMySession();
String hql = "select film.date,film.hall from Film as film where film.name = ?";
List filmInfoList = null;
try {
Query query = session.createQuery(hql);
query.setString(0, filmName);
filmInfoList = query.list();
System.out.println();
} catch (HibernateException e) {
e.printStackTrace();
} finally {
session.close();
}
return filmInfoList;
}
}然后在Action中调用这个函数,接着问题就来了。函数返回的是一个List,里面是Object对象,我想把Object强制转换成Film对象,但是不行,加上相应的构造函数也不行。

解决方案 »

  1.   

    你给list加上泛型 List<Film>
      

  2.   

    java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to model.Film
      

  3.   

    转换的代码看看,还有拿到的list是否正确
      

  4.   

    没道理啊....你这里既然返回的List里面是对象 那么
    select film.date,film.hall from Film as film where film.name = ?  就不用这么写了嘛
    from Film  film where film.name = ?
      

  5.   

    String hql = "select film.date,film.hall from Film as film where film.name = ?";
    List<Film> filmInfoList = null;
    这样改,再试试
    再说,你可以干脆取出一个Film来,然后再程序中选出getDate(),getHall()。我觉得这样也不失为一种解决办法
      

  6.   

    Query query = session.createQuery(hql).addEntity(Film.class);
    这样读取出来的数据会自动填充到实体bean里面,如果不用addEntity方法的话,默认是object数组
      

  7.   

    直接取一个Film出来
    用" from Film where..."这样 
    在用get方法不是蛮好的?
    -------------------
    你这样取出来的应该是个数组 你要这么写
    String filedate = Object[0];
    String film.hall = Objcct[1];
    -----------
    String类型如果不对就用Film类型试试。  总之 ,你这么取,出来的是个数组,所以直接转成Film类型肯定不对。
      

  8.   

    不用泛型就可以。sql语句这样就行:select date,hall from Film where name = ?
    然后加断点看下,具体哪行报的错?
      

  9.   

    query.setString(0, filmName);应该是query.setString(1, filmName);
      

  10.   

    。不要误导LZ  Hibernate里面是从0开始的
      

  11.   

     "select film.date,film.hall from Film as film where film.name = ?";
    返回来的对象怎么会是List<Film>呢?
      

  12.   

    LZ可能看代码多了头也晕了,本来你用"select film.date,film.hall "查找的也只是film的部分属性,查出的结果也就当然不可能再是film对象了。
      

  13.   

    Query query = session.createSQLQuery(hql);
      

  14.   

       你可以这样试一下! List<Film> = null; 这样是可以的! 返回的时候.get(0)应该可以拿到数据!你的是什么框架?