gpt4 book ai didi

java - 如何为@CachePut定义多个键?

转载 作者:行者123 更新时间:2023-11-30 06:27:10 27 4
gpt4 key购买 nike

如何在对象上使用@CachePut,并通过其多个属性更新缓存?

示例:每次调用“findOneByFirstnameAndLastname()”方法时,缓存的人员都会添加到 PERSONS 缓存中。

如果Person对象被持久化,我还希望缓存更新该人。但是我如何告诉 @CachePut 使用 firstname+lastname 作为 PERSONS 缓存的键?现在,save() 方法更新缓存...

public interface PersonRepository extends CrudRepository<Person, Long> {
//assume there is only one valid person
@Cachable("PERSONS")
Person findOneByFirstnameAndLastname(String firstname, String lastname);

//TODO how to update cache by entity.firstname + entity.lastname
@CachePut("PERSONS")
@Override
Person save(Person entity);
}

最佳答案

最后,我成功地在lookip期间使用了对参数(#p1, #2)的引用,并在persist期间使用了对#result.*的引用:

@Cacheable(cacheNames = "PERSONS", key = "#p1 + #p2")
Person findByFirstnameAndLastName(String firstname, String lastname);

@CachePut(cacheNames = "PERSONS", key = "#result.firstName + #result.lastName")
Person save(Person person);

但我不知道为什么我不能使用 #firstname + #lastname#person.firstname + #person.lastname,但 Spring 不断提示有那么null参数。也许 Spring 现阶段无法解析参数名称,这是为什么。

关于java - 如何为@CachePut定义多个键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46957867/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com