您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“如何解決spring jpa中update的坑”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“如何解決spring jpa中update的坑”這篇文章吧。
使用jpa 自己編寫update語句,
1.在同一個service事物中,先執行保存,在執行更新,緊接著執行查詢--查詢結果為更新前的結果。
2.執行自定義update方法結束后執行查詢查出結果依然為update前的結果集
自定義update并未清空實體緩存。注解@Modifying加參數eg:@Modifying(clearAutomatically = true)
@Modifying(clearAutomatically = true),@Transactional
它說的是可以清除底層持久化上下文,就是entityManager這個類,我們知道jpa底層實現會有二級緩存,也就是在更新完數據庫后,如果后面去用這個對象,你再去查這個對象,這個對象是在一級緩存,但是并沒有跟數據庫同步,這個時候用clearAutomatically=true,就會刷新hibernate的一級緩存了, 不然你在同一接口中,更新一個對象,接著查詢這個對象,那么你查出來的這個對象還是之前的沒有更新之前的狀態。
如果說在同個事務方法中,如果有多個更新操作,使用@Modifying(clearAutomatically = true),就會產生在此之前的update操作全部失效,因為把jpa的一級緩存都刷新掉了
以上是“如何解決spring jpa中update的坑”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。