У меня есть Spring Boot RESTful API для получения и отправки SMS-сообщений клиентам.Мое приложение подключается к нашему локальному SMS-серверу, получает и отправляет SMS-сообщения клиентам через операторов мобильной связи.Мое приложение работает хорошо.Но я хотел оптимизировать свое приложение, внедрив кеш.Я использую простой кеш Spring Boot.Я сталкиваюсь с некоторыми трудностями при создании новых SMS.
Все отправленные / полученные 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
.
![enter image description here](https://i.stack.imgur.com/lK5ww.png)
Любая помощь будет принята с благодарностью.