更新語句未刷新?
Spring Data JPA 的 @Query 註解允許執行自訂查詢。在提供的程式碼片段中,@Modifying 查詢用於更新管理實體。但是,透過此查詢所做的變更不會持久化到資料庫中。
刷新的作用
預設情況下,EntityManager 不會自動刷新變更。這意味著透過 @Modifying 查詢所做的變更只會反映在 EntityManager 的本機快取中,但在明確刷新 EntityManager 之前它們不會持久化到資料庫。
解決方案:強制刷新
為了確保透過@Modifying 查詢所做的變更持久儲存到資料庫中,請將clearAutomatically = true 選項新增至@Modifying 註解中。這將強制 EntityManager 在每次寫入操作後自動刷新更改,確保資料庫立即更新。
修改後的查詢:
<code class="java">@Modifying(clearAutomatically = true) @Transactional @Query("UPDATE Admin SET firstname = :firstname, lastname = :lastname, login = :login, superAdmin = :superAdmin, preferenceAdmin = :preferenceAdmin, address = :address, zipCode = :zipCode, city = :city, country = :country, email = :email, profile = :profile, postLoginUrl = :postLoginUrl WHERE id = :id") public void update(@Param("firstname") String firstname, @Param("lastname") String lastname, @Param("login") String login, @Param("superAdmin") boolean superAdmin, @Param("preferenceAdmin") boolean preferenceAdmin, @Param("address") String address, @Param("zipCode") String zipCode, @Param("city") String city, @Param("country") String country, @Param("email") String email, @Param("profile") String profile, @Param("postLoginUrl") String postLoginUrl, @Param("id") Long id);</code>
其他注意事項:
以上是為什麼我的更新語句沒有在 Spring Data JPA 中刷新?的詳細內容。更多資訊請關注PHP中文網其他相關文章!