日期:2014-05-20  浏览次数:20718 次

hibernate执行sql语句
public ResultSet writeXml() throws HibernateException, SQLException {
Session session = getSession();
ResultSet rs = null;
String sql = "select count(cardname) as count,cardname from tb_dk_orderinfo group by cardname order by count desc";

// 获取connection,执行静态SQL
Statement state = session.connection().createStatement();
rs = state.executeQuery(sql);
session.close();

return rs;
}

这段代码执行的时候会抛异常:query did not return a unique result: 10
sql语句执行出来的结果是会返回多条记录,这样写不可以执行这样的语句吗?

------解决方案--------------------
Hibernate框架不是执行SQL语句,而是执行hql语句,from语句后不是接一个表名,而接一个JavaBean的名,JavaBean名后接的是一个别名!因为你的用的SQL语句,在Hiberante里就不能识别到!!在查找的字段里前面要用一个别名加点再接字段名才能查找到相应的字段!!总一个主要的原因是:你先把session关闭了然后再返回一个resultset所以会抛出一个空指针异常!!

Statement state = session.connection().createStatement(); 
这里不能先加session后加connection,因为session是调用一个connection的!而且在Hibernate里面是没有Statement 个语名的!上面这句话应该改为:
Statement state=connection.session();