使用Hibernate,我试图通过从列表中设置多个值并同时执行它来执行查询。这是代码
public void savePriority(List<Integer> priorities,int typeid) {
String sql="update table conf_sr_type_baserule_assoc set n_priority=:priority where n_typeid=:typeid";
/*System.out.println("sql query in savePriority"+sql);*/
Session session=sessionFactory.openSession();
Transaction tx=session.beginTransaction();
SQLQuery squery=session.createSQLQuery(sql);
tx.begin();
for(int priority:priorities){
squery.setParameter("priority", priority);
squery.setParameter("typeid", typeid);
squery.executeUpdate();
}
tx.commit();
session.close();
}
但是我收到了一个错误:
org.hibernate.exception.SQLGrammarException:无法执行本机批量操作查询
答案 0 :(得分:1)
问题来自您的SQL查询,该查询无效。
应该是:
update conf_sr_type_baserule_assoc set n_priority=:priority where n_typeid=:typeid
而不是
update table conf_sr_type_baserule_assoc set n_priority=:priority where n_typeid=:typeid