日期:2014-05-19  浏览次数:20986 次

getHibernateTemplate().getSessionFactory().openSession().createSQLQuery(strSql)
用SSH框架,基于HibernateDaoSupport的类,查询时用这种写法就不出错:

getHibernateTemplate().find("FROM Manager") ;

但是改成以下的代码就出错了:

Session oSess=this.getHibernateTemplate().getSessionFactory().openSession();
SQLQuery oQuery=oSess.createSQLQuery("SELECT * FROM Manager");
return oQuery.list();

执行到第二行就出错了。求指点

------解决方案--------------------
直接这样获取session不行吗?
Session oSess = this.getSession();
再来创建Query!
------解决方案--------------------
什么错误?
------解决方案--------------------
1.看看Session是不是有问题
2.createSQLQuery 查询时SQL语句不是HQL 如果要查询HQL 改为createQuery("from Manager");
3.注意最后返回的对象List 如果你的是SQL的查询 对象肯定也是不正确的。
以上的LZ可以都按照我的该试试
------解决方案--------------------
你要炒作session,正确的做法应该是:
getHibernateTemplate().executeFind(new HibernateCallback<Object>() {
@Override
public List<E> doInHibernate(Session session)throws HibernateException, SQLException {
 //这里写你的sql语句
 return 这里写要返回的结果;
}
});
------解决方案--------------------
你是不是写的是HQL语句哦,数据库里面的表名不是Manager哦!!