我在数据库中有个表叫client 里面就俩元素:名字 和 密码然后我在代码里也定义了class Client 同样也只有俩数据成员:名字 和 密码然后在写dao的时候,我写了个方法:
public Client FindClientByName(String name) {
Session session = connect(); //自己写的方法
Transaction trans = session.beginTransaction();
String sql = "SELECT * FROM client WHERE name = '" + name + "'";
Client c = (Client) session.createSQLQuery(sql);
trans.commit();
        return c;
}编译后出报错:
org.hibernate.impl.SQLQueryImpl cannot be cast to core.Client
请问该怎么做
谢谢hibernatedao类型转换

解决方案 »

  1.   

    用list存放
    List<Client> list = (强转)session.createSQLQuery(sql);
      

  2.   


    我还写了个方法:FindAll
    public List<Client> FindAll() {
    Session session = connect();
    Transaction trans = session.beginTransaction();
    String sql = "SELECT * FROM client";
    List<Client> list = (List<Client>)(session.createSQLQuery(sql).list());
    trans.commit();
    session.close();
    return list;
    }但是我拿到这个东西 输出的时候 输出的貌似是地址  我正想问这个List应该如何输出
    DAOClient dao = new DAOClientImpl();
    List<Client> list = dao.FindAll();
    Iterator<Client> it = list.iterator();
    while(it.hasNext()) {
    System.out.println(it.next());
    }最后输出的结果为:
    [Ljava.lang.Object;@c3c315
    [Ljava.lang.Object;@3c9c31然后我又在System.out.println(it.next());
    这儿添加了强制转换System.out.println((Client)it.next());但这样的话又出现了类似上面的报错:无法转换这是哪儿出了问题啊
      

  3.   

    在拿到list之后for(int i=0;i<list.size();i++){
      Client client = (Client)list.get(i);
    }
    你试试看,我手写的,应该没问题
      

  4.   


    谢谢帮助不过还是不行  同样的问题
    那可能是你取得数据有问题了,你断点调试一下,查看一下获取到的数据是哪些,然后可以采用Client.setXXX(XX)这样的写法
      

  5.   


    谢谢帮助不过还是不行  同样的问题
    那可能是你取得数据有问题了,你断点调试一下,查看一下获取到的数据是哪些,然后可以采用Client.setXXX(XX)这样的写法好 我试试
      

  6.   


    谢谢帮助不过还是不行  同样的问题
    那可能是你取得数据有问题了,你断点调试一下,查看一下获取到的数据是哪些,然后可以采用Client.setXXX(XX)这样的写法问题出在这里:
    List list = (session.createSQLQuery(sql).addEntity(Client.class).list());
    而不能:
    Client c = (Client)(session.createSQLQuery(sql);也就是执行sql语句取值的时候出了问题 如你所说谢谢啦~~~