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

解决方案 »

  1.   

    首先要继承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;
    }