在单个语句中更新多个记录

时间:2012-03-27 14:56:48

标签: hibernate row

我有桌子,想要更新每个ID的每个Salary记录

ID      FirstName     Salary
10      A             10,000
15      B             5000
17      C             7000
19      D             8000

但是发生了什么是为每一行执行update语句。假设我有1000条记录然后更新语句正在执行1000次。有没有更好的方法我可以实现这一点。 我正在做,

RetriveDataMethod()
{ 
List listIdSalary = retriveIdAndSalary();
Iterator itr =listIdSalary.iterator();
 while(itr.hasNext()){
   Object[] idStr = (Object[]) itr.next();
   String id = (String)idStr[0];
   String salary = (String)idStr[1];
   updateDataMethod(id,salary)
 }
}

updateDataMethod(String id,String salary)
{
String s = "update table set salary=:salry where id=:id"
Query q = session.createQuery(s);
q.setString("salary",salary);
q..setString("id",id);
q.executeUpdate();
session.commit();
}

由于

1 个答案:

答案 0 :(得分:0)

如果使用Criteria和/或HQL / JPAQL语句执行所有操作,则允许Hibernate缓存这些语句。这样,当刷新或提交会话时,它将发出所有更新语句,这样更有效。

您可能还想询问在每次更新后执行commit()是否是个好主意。