首页  >  文章  >  Java  >  ## 为什么我的 Spring Data JPA @Query Update 没有反映在实体中?

## 为什么我的 Spring Data JPA @Query Update 没有反映在实体中?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-27 10:39:02513浏览

## Why is My Spring Data JPA @Query Update Not Reflecting in the Entity?

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn