通过spring缓存中的方法访问返回的数据

Iti*_*pta 5 java caching ehcache redis spring-boot

我有一个Person其中有idname

Id当我通过方法搜索返回Person对象时,我想将其作为缓存键,但返回的数据在注释标记name中不可访问,但可以在标记中访问。keyCacheablenameunless

@Cacheable(value = "Cache", key = "#result.name", unless="#result.name == 'Foo'")
public Person getById(String id){}
Run Code Online (Sandbox Code Playgroud)

如果我使用key = "#result.name"它会给我例外:

EL1007E:在 null 上找不到属性或字段“名称”

我缺少什么,如何访问key标记中方法返回的数据?

msp*_*msp 4

在您的用例中,这是不可能的,因为缓存键是从您传递给方法的参数生成的,即String id. name因此Spring尝试从字符串中提取参数。这是不可能的。

即使可以使用结果的名称作为缓存键,缓存也不会在您通过 查询时起作用id