日期:2014-05-17  浏览次数:20883 次

请问如何用Hibernate执行原生的sql的delete语句?
由于各种原因,必须用hibernate执行原生的sql语句,不能使用hql,请问如何用hibernate执行原生的delete语句呢?

------解决方案--------------------
首先要继承HibernateDaoSupport
然后在重写匿名方法:
如:
public List<Goods> queryByQry(GoodsQryHelper goodsQryHelper) {

log.debug("GoodsDaoImpl:根据查询条件查询物品信息");

final GoodsQryHelper qryObj = goodsQryHelper;
List<Goods> goodsList = getHibernateTemplate().executeFind(
new HibernateCallback() {

@Override
public Object doInHibernate(Session session)
throws HibernateException, SQLException {

StringBuffer hqlStr = generalSql(qryObj);

List<Goods> list = new ArrayList<Goods>();
try {
list = session.createQuery(hqlStr.toString())
.list();
} catch (Exception e) {
log.error("GoodsDaoImpl:物品信息获取失败!!!");
throw new DataAccessException("物品信息获取失败!!!", e);
}
return list;
}

});
return goodsList;
}