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