未使用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中文網其他相關文章!