我在数据库中有个表叫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类型转换
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类型转换
List<Client> list = (强转)session.createSQLQuery(sql);
我还写了个方法: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());但这样的话又出现了类似上面的报错:无法转换这是哪儿出了问题啊
Client client = (Client)list.get(i);
}
你试试看,我手写的,应该没问题
谢谢帮助不过还是不行 同样的问题
那可能是你取得数据有问题了,你断点调试一下,查看一下获取到的数据是哪些,然后可以采用Client.setXXX(XX)这样的写法
谢谢帮助不过还是不行 同样的问题
那可能是你取得数据有问题了,你断点调试一下,查看一下获取到的数据是哪些,然后可以采用Client.setXXX(XX)这样的写法好 我试试
谢谢帮助不过还是不行 同样的问题
那可能是你取得数据有问题了,你断点调试一下,查看一下获取到的数据是哪些,然后可以采用Client.setXXX(XX)这样的写法问题出在这里:
List list = (session.createSQLQuery(sql).addEntity(Client.class).list());
而不能:
Client c = (Client)(session.createSQLQuery(sql);也就是执行sql语句取值的时候出了问题 如你所说谢谢啦~~~