Объект стал нулевым в аннотации @CachePutJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Объект стал нулевым в аннотации @CachePut

Сообщение Anonymous »

По какой-то причине я вижу, что объект был передан не нулевым, но в ключевом выражении он уже равен нулю.
Я пытаюсь прочитать некоторые данные из БД и добавить их в кэш.
Вот мои методы.

Код: Выделить всё

public void preloadCache() {
List allData = repository.findAll();
log.info("Data found {}", allData.size());
allData.forEach(cacheService::populateQuarterStatisticCache);
}
Вызывается отдельная служба

Код: Выделить всё

@Service
@Slf4j
public class CacheService {

@CachePut(value = "quarterStatistic", key = "#statistic.type + '-' + #statistic.location")
public QuarterBusinessesStatistic populateQuarterStatisticCache(Statistic statistic) {
log.info("Loading statistic into cache: {}-{}", statistic.getType(), statistic.getLocation());
return statistic.getData();
}
}
Журналы показывают, что есть один объект, и он не равен нулю.

Код: Выделить всё

[nio-8080-exec-1] StatisticClient     : Data found 1
[nio-8080-exec-1] CacheService     : Preloading statistic into cache: restaurant-New York
Но следующая строка журнала сообщает мне, что
SpelEvaluationException: EL1007E: свойство или поле «тип» не могут быть найдены в значении null
Если Я меняю ключ в аннотации @CachePut на key = "#statistic?.type + '-' + #statistic?.location", исключений не будет. Но в кеше я увижу сохраненный объект по ключу null-null
Я могу отладить его и увидеть, что мой объект не равен нулю. Журналы также подтверждают это. Но в ключевом выражении оно почему-то равно нулю.
У кого-нибудь было так же?
Примечание: я пробовал изменить ключ на что-то вроде

Код: Выделить всё

#statistic.getType() + '-' + #statistic.getLocation()
- тот же результат

Подробнее здесь: https://stackoverflow.com/questions/792 ... annotation
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»