使用hibernate執行原生update更新資料(只更新部分欄位)
阿新 • • 發佈:2019-01-29
事務根據實際情況進行新增,這裡不特殊說明
1、使用update執行更新部分欄位
String sql = " update A set a.grade= :grade,a.gradeType = :gradeType where a.number in ( select number from B where b.createTime > to_char('2020-02-02','yyyy-mm-dd')) "
SQLquery query = session.createSQLquery(sql);
query.setParameter("grade",grade);//grade 這裡使用的是站位符 代表的是冒號後面的grade
query.setParameter("gradeType ",gradeType );
int i = query.executeUpdate();
2、使用原生sql update 連續進行更新;
連續進行更新的話會出現由於事務沒有提交而導致的更新失敗的問題,下面是一個失敗的例子String sql = " update A set a.grade= :grade,a.gradeType = :gradeType where a.number in ( select number from B where b.createTime > to_char('2020-02-02','yyyy-mm-dd')) "
SQLquery query = session.createSQLquery(sql);
query.setParameter("grade",grade);//grade 這裡使用的是站位符 代表的是冒號後面的grade
query.setParameter("gradeType ",gradeType );
int i = query.executeUpdate();