首页 > Java > java教程 > 正文

为什么我的 Spring Data JPA @Query 更新不起作用:EntityManager 刷新之谜?

Linda Hamilton
发布: 2024-10-27 07:10:29
原创
171 人浏览过

Why Does My Spring Data JPA @Query Update Not Work: The EntityManager Flush Mystery?

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将在执行更新查询后自动刷新更改,确保

其他观察:

  • findByEmail 和 findByLogin 查找器的 SQL 语句中看到的 limit 2 子句是一个数据库 -在 WHERE IN 查询中使用限制子句时的特定行为。 Spring Data 使用此行为来根据派生信息优化查询。
  • MySQL 和 Java 中的行为差异可能与使用不同的 JDBC 驱动程序或连接设置有关。确保两种环境中使用的驱动程序和连接设置之间的一致性非常重要。

以上是为什么我的 Spring Data JPA @Query 更新不起作用:EntityManager 刷新之谜?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!