首頁  >  文章  >  Java  >  ## 為什麼我的 Spring Data JPA @Query Update 沒有反映在實體中?

## 為什麼我的 Spring Data JPA @Query Update 沒有反映在實體中?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-27 10:39:02513瀏覽

## Why is My Spring Data JPA @Query Update Not Reflecting in the Entity?

未使用Spring Data JPA @Query 進行更新

在Spring Data JPA 中,提供的更新查詢無法更新實體,導致測試失敗查詢無法更新。

儘管對查詢實施了所需的修改以使用參數化值,但更新的欄位不受影響,保留其初始值。在查找操作之前新增刷新操作也無法解決問題。

檢查產生的 SQL 語句後,您會發現更新查詢已正確執行,但檢索修改實體的查詢似乎是被忽略。這表明存在潛在的緩存問題。

但是,當向其他查找器新增呼叫時,更新的值會反映在檢索到的物件中。此行為是不一致且意外的。

此外,檢索修改實體的 SQL 語句包含 limit 2 子句,儘管假設 Spring Data 在傳回單一物件時應始終使用 limit 1 子句。

有趣的是,當在 MySQL 用戶端中手動執行生成的 SQL 語句時,邏輯工作完美無缺,這引發了一個問題:為什麼這種行為在 Java 層級上沒有一致反映。

這個問題的根本原因在於 EntityManager 的預設行為,它不會自動刷新變更。若要解決此問題,應在 @Modifying 註解中啟用clearAutomatically 選項,確保更新查詢後立即刷新變更。

以上是## 為什麼我的 Spring Data JPA @Query Update 沒有反映在實體中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn