更新语句未刷新?
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中文网其他相关文章!