Spring @Cacheable с ключом SpEL: всегда оценивается как ноль
У меня проблема с @Cacheable и я использую пользовательский ключ, основанный на языке выражений Spring. У меня есть следующий код
@Cacheable(value = "myCache", key = "#providerDTO.identifier")
ClientVO loadClientVOByProviderDTO(ProviderDTO providerDTO);
Это выбрасывает следующую ошибку
org.springframework.expression.spel.SpelEvaluation Exception: EL1007Epos 0): Field or property 'identifier' cannot be found on null
Аргумент providerDTO не является нулевым, я проверял это много раз. Документы говорят, что это должно работать, поэтому я очень смущен. Документы дают следующий пример
@Cacheable(value="books", key="#isbn.rawNumber")
Я также пытался с помощью статического метода. Это выдает исключение NullPointerException, потому что здесь providerDTO имеет значение null.
public static String cacheKey(ProviderDTO providerDTO)
{
return providerDTO.identifier + "-" + providerDTO.clientID + "-" + providerDTO.clubID;
}
Как я могу отладить это, чтобы узнать, что происходит? Это весна 3.2.4-RELEASE. Тег @Cacheable находится на интерфейсе, но я использую стандартную пружинную AOP, а не AspectJ, насколько я понимаю, это все равно должно работать нормально.
1 ответ
Возможный дубликат SpelEvaluationException: EL1007E:(поз. 43): Поле или свойство 'group' не может быть найдено для null и spring @Cacheable с помощью Ehcache, spel find null для допустимого объекта - я полагаю, что вы компилируете без отладочной информации. Пожалуйста, проверьте свою конфигурацию Maven; Вы можете разместить соответствующие биты здесь. Поиск вашего POM (или родительского POM) для поиска maven-compiler-plugin
и строка, такая как:
<debug>false</debug>