因为项目关系需要使用HibernateTemplate来执行SQL语句更新,在网上查了下相关代码,参考一些博客写了如下方法即可实现。代码如下:
public int updateBySQL(final String sql,final List pl) {
try {
return this.template.execute(new HibernateCallback(){
public Object doInHibernate(Session session) throws HibernateException,SQLException {
SQLQuery query = session.createSQLQuery(sql);
if(pl != null && !pl.isEmpty) {
for(int i = 0;i < pl.size();i++) {
query.setParameter()i,pl.get(i);
}
return query.executeUpdate();
}
}
});
} catch(Exception e) {
e.printStackStace();
throw new Exception(e.getMessage());
}
}
可是执行却出现了如下异常了:
java.lang.UnsupportedOperationException: Update queries only supported through HQL
后来查了网上说因为Hibernate3.1执行executeUpdate()时会出现如上异常,应该将版本更新至至少3.2.5,我查了下项目的hibernate3.jar的版本信息是3.1.3,换成了3.2.5.ga,再次执行,异常消失,问题得以解决,这个问题网上基本都有正确的解答,此处自己再记录巩固下。