public void clearAll(final String hql) { this.getHibernateTemplate().execute(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException, SQLException { Query query = session.createQuery(hql); query.executeUpdate(); return null; } }); }
HibernateTemplate的delete方法并不支持hql语句,查看HibernateTemplate方法发现了一个execute方法,要实例一个HibernateCallback接口。
由于spring封装hibernate后的HibernateTemplate灵活性不足,所以我们可以通过HibernateCallback接口来使用hibernate的方式来执行hql语句.