// 根据用户工号获取用户
public List getUserByEmpno(String empno) {
// TODO Auto-generated method stub
Session session = this.getSession();
String sql="select * from [User] where empno=?";
Query query=session.createSQLQuery(sql);
query.setString(0, empno);
List list=query.list();
if (session != null) {
session.close();
}
return list;
}
public User getUserByEmpno(String empno) {
//调用方法并接收
List list=userDao.getUserByEmpno(empno);
User user = null;
if(list.size()>0){
//将获取的对象转换成user类型
user=(User) list.get(0);
}
return user;
}上面的方法查出来的是list里面是object对象集合
红色部分在类型转换时发生错误,怎么解决啊?

解决方案 »

  1.   

    你把List改写成List<User>试试
      

  2.   

    看你的userDao.getUserByEmpno(empno)是怎么写的了
    有可能是在这个查询的时候做了关连查询,查出来的是object,里面包含两个对象的结果
      

  3.   

     String sql="select * from [User] where empno=?";
            Query query=session.createSQLQuery(sql);
    你使用的sql query的,返回的当然是Object数组啦
      

  4.   

    String hql = "from User u where u.empno=:empno";
    session.createQuery(hql).setParameter("empno", empno).list();
    修改成这样
      

  5.   

    把List改写成List <User>
    再把Query query=session.createSQLQuery(sql);
    改成Query query=session.createQuery(sql);
    试试或者把"select * from [User] where empno=?";
    改成"select * from 数据库名..User where empno=?";
    试试,,,
      

  6.   

    我知道用HQL能容易实现,但是由于我在其他方面的需要,这里必须用SQl语句,所以还是请大家帮我看看如何转换吧!!
      

  7.   

    我晕啦,还有这样使用的。
    createSQLQuery(sql)。list查询出来的list(object[],object[],....)
    现在你要强制转化为User,可能吗?
    一个是user 一个object[]数组。
    如果你的user做了hibernate的映射,那就改
    String sql="from User where empno=?";
            Query query=session.createQuery(sql);