为了账号安全,请及时绑定邮箱和手机立即绑定

Spring Boot Cache SpEL (#result) 返回 Null

Spring Boot Cache SpEL (#result) 返回 Null

哈士奇WWW 2022-07-20 16:03:45
我有一个 Spring Boot RESTful API 来接收和发送 SMS 给客户端。我的应用程序连接到我们的本地短信服务器,并通过移动运营商接收短信并将其推送给客户。我的应用程序运行良好。但我想通过实现缓存来优化我的应用程序。我正在使用 Spring Boot 的简单缓存。创建新短信时我面临一些挑战。发送/接收的所有 SMS 都以对话的形式(每张票)并附有客户端。所以我面临着将客户端保存到缓存中的困难。下面是 createClient() 片段:@Transactional@Caching(evict = {        @CacheEvict("allClientsPage"),        @CacheEvict("countClients")}, put = {        @CachePut(value = "clients", key = "#result.id", unless="#result != null"),        @CachePut(value = "clientsByPhone", key = "#result.phoneNumber", unless="#result != null")})public Client create(Client client) {    Client c = new Client();    if (client.getName() != null) c.setName(client.getName().trim());    c.setPhoneNumber(client.getPhoneNumber().trim());    /**---***/    c.setCreatedAt(new Date());    return clientRepository.save(c);}当我尝试创建一个新客户端时,org.springframework.expression.spel.SpelEvaluationException: EL1007E: Property or field 'id' cannot be found on null被抛出。
查看完整描述

1 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

而不是使用unless="# result! = null"使用condition="#result != null"



查看完整回答
反对 回复 2022-07-20
  • 1 回答
  • 0 关注
  • 332 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信