JPA 调用存储过程后,无法获取修改后的值

2019-08-06 16:17:22 +08:00
 Zach2017

请教各位大佬, 项目中使用 JPA 调用存储过程, 之后在通过 EM 获取不到修改后的数据, 但是数据库中已经更新了, 请问有什么办法能够使 JPA 不走缓存直接查询数据库, 或者能够在存储过程之后刷新缓存吗? 谢谢!!

2896 次点击
所在节点    Java
6 条回复
adzchao
2019-08-06 16:46:15 +08:00
找配置文件 或者是 repository 肯定是方法上加了缓存注解 才会出现有缓存出现的
Zach2017
2019-08-06 16:56:50 +08:00
@adzchao 感谢关注, 我在当前的 EM 中设置 CacheRetrieveMode.BYPASS, 还是无法直接从数据库中获取最新的数据, 每次都是获取上一次修改的数据!而且我检查了, 没有在方法上明确加缓存, 那是否是 JPA 默认的一些机制导致的, 有什么办法让这一次的查询直接查数据库吗?
cheng6563
2019-08-06 17:08:52 +08:00
这部分改用 jdbcTemplate 吧,jpa 真的是一言难尽
adzchao
2019-08-06 17:10:03 +08:00
我不知道你的 CacheRetrieveMode.BYPASS 是干嘛用的 反正我整个项目都是 jpa 也没有出现缓存的现象 而且基本没有对于关于存储方面的配置
alvinbone88
2019-08-06 17:19:43 +08:00
刷新一下 Hibernate 的一级缓存
Zach2017
2019-08-06 18:12:28 +08:00
感谢给位大佬,之前用的也是 jdbcTemplate, 目前公司基本上都用 JPA 来处理了,用起来是有点不习惯, 目前的做法是在调用存储过程之后, 直接调用 EM 的 clear 方法, 就是不知道会不会有其他的影响!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/589524

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX