hibernate执行sql语句

lanhaiguangying 2008-02-02 01:40:25
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语句执行出来的结果是会返回多条记录,这样写不可以执行这样的语句吗?
...全文
5408 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq373077671 2011-11-28
  • 打赏
  • 举报
回复
rs = state.executeSQLQuery(sql);
chengliang69 2009-06-30
  • 打赏
  • 举报
回复
你通过session得到数据库连接,再到createStatement(); 得到Statement对象 去执行sql
是可以的
但hibernate要求所有的数据库操作都要加入事务
你可以开启一个事务
Transaction tran = session.beginTransaction()
Statement state = session.connection().createStatement();
rs = state.executeQuery(sql);
session.close();
tran.commit();
return rs;
}
lanhaiguangying 2008-02-28
  • 打赏
  • 举报
回复
问题还是遗留了下来,没解决
loading321 2008-02-09
  • 打赏
  • 举报
回复
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();
lanhaiguangying 2008-02-02
  • 打赏
  • 举报
回复
如果我用hql语句返回List对象,那么我想取到数据库中的字段名,应该怎么取呢?
我是想把数据库中的数据取出来并生成一个xml,我找到的方法是返回的ResultSet(所以就有了上面的代码了),这样也能和容易的取到字段名。
如果返回List我就不知道该怎么办了
xql80329 2008-02-02
  • 打赏
  • 举报
回复
hibernate 是执行 hql语句 from 表
lanhaiguangying 2008-02-02
  • 打赏
  • 举报
回复
给提点建议也可以

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧