Spring Data JPA 更新 @Query 不更新:Flush 困境
在 Spring Data JPA 中使用 @Query 注解进行更新操作时,对于理解 EntityManager 的行为至关重要。默认情况下,EntityManager 不会自动刷新数据库的更改。这可能会导致意外结果,其中更新似乎被忽略。
在提供的代码的情况下,集成测试失败,因为在更新查询后对管理实体所做的更改未刷新到数据库。要解决此问题,建议使用带有@Modifying注释的clearAutomatically = true选项:
@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, ...);
通过添加此选项,EntityManager将在执行更新查询后自动刷新更改,确保
其他观察:
以上是为什么我的 Spring Data JPA @Query 更新不起作用:EntityManager 刷新之谜?的详细内容。更多信息请关注PHP中文网其他相关文章!