1. 程式人生 > >使用hibernate執行原生update更新資料(只更新部分欄位)

使用hibernate執行原生update更新資料(只更新部分欄位)

事務根據實際情況進行新增,這裡不特殊說明

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();