今天使用mybatis和jpa的過程中,發現這樣一個問題:
mybatis執行一個update方法,返回值為1,但是數據庫中數據並未更新,粘貼sql語句直接在數據庫執行,等待好久報錯:Lock wait timeout exceeded; try restarting transaction
最后發現:
1.實體在前面 是使用JPA查詢得出的
2.在后面update的時候,是使用mybatis去做update的
這就導致了前面的鎖還沒有釋放,后面update的時候 就在等待鎖的釋放。
雖然mybatis執行update返回了1 但是並沒有執行成功!!!
注意 JPA和mybatis的事務 不一樣,如果涉及到事務 一定要將對數據庫的操作控制在同一個事務中!!!!