一个查询操作,缓存的是查出的实体类: https://ww1.sinaimg.cn/large/006vQwEGgy1gn97871sdsj30de020t8q.jpg 更新操作,缓存的却是更新后的结果: int https://ww1.sinaimg.cn/large/006vQwEGgy1gn94vg7wnwj30co01xq2z.jpg 这样的话,更新数据库之后,更新缓存,再次查询,查出的却是: int 现在的解决方法就是将更新操作返回 int 改为返回实体类,这样更新的时候更新的就是实体类,而不是用返回值 int 去覆盖;我在想,能不能指定缓存的内容,让 cacheput 更新的时候更新的是实体类?
1
wsw OP |
2
wsw OP |
3
AlkTTT 2021-02-02 15:20:46 +08:00
api 应该没这么“智能”吧?
可以试试重写这个注解的逻辑,aop 拦截执行前的 bean 或者更新操作以后,再执行一次查询操作? |
5
anonydmer 2021-02-02 16:27:22 +08:00
感觉你想多了,更新时候常规操作不是清除缓存么?
|
6
canbingzt 2021-02-02 16:49:42 +08:00
update 方法 return task 就行
|
7
canbingzt 2021-02-02 16:52:06 +08:00
还有个问题,缓存的内容不能是 null,可能还需要在注解中加入, unless="#result == null"
|