久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術(shù)文章
文章詳情頁

解決spring jpa中update的坑

瀏覽:3日期:2023-06-27 09:06:51
spring jpa中update遇到的坑

使用jpa 自己編寫update語句,

遇到問題:

1.在同一個service事物中,先執(zhí)行保存,在執(zhí)行更新,緊接著執(zhí)行查詢--查詢結(jié)果為更新前的結(jié)果。

2.執(zhí)行自定義update方法結(jié)束后執(zhí)行查詢查出結(jié)果依然為update前的結(jié)果集

解決問題所在:

自定義update并未清空實體緩存。注解@Modifying加參數(shù)eg:@Modifying(clearAutomatically = true)

jpa更新問題記錄使用jpa 去更新:

@Modifying(clearAutomatically = true),@Transactional

它說的是可以清除底層持久化上下文,就是entityManager這個類,我們知道jpa底層實現(xiàn)會有二級緩存,也就是在更新完數(shù)據(jù)庫后,如果后面去用這個對象,你再去查這個對象,這個對象是在一級緩存,但是并沒有跟數(shù)據(jù)庫同步,這個時候用clearAutomatically=true,就會刷新hibernate的一級緩存了, 不然你在同一接口中,更新一個對象,接著查詢這個對象,那么你查出來的這個對象還是之前的沒有更新之前的狀態(tài)。

注意:

如果說在同個事務(wù)方法中,如果有多個更新操作,使用@Modifying(clearAutomatically = true),就會產(chǎn)生在此之前的update操作全部失效,因為把jpa的一級緩存都刷新掉了

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 醴陵市| 平远县| 永新县| 衡山县| 上思县| 望谟县| 晋宁县| 石渠县| 新野县| 海宁市| 兴和县| 噶尔县| 乃东县| 庐江县| 黎城县| 钟山县| 敖汉旗| 珠海市| 盐池县| 三穗县| 凤台县| 丰都县| 和顺县| 桐柏县| 玉林市| 竹山县| 团风县| 衢州市| 南澳县| 永泰县| 鸡东县| 海林市| 鸡泽县| 右玉县| 临洮县| 思茅市| 长岛县| 阜新市| 贵南县| 灵山县| 察哈|