En mi aplicación, la clave de caché es anulable , por lo que solo quiero ponerla en caché cuando la clave no es nula .
He intentado muchas formas diferentes, pero parece que Spring Cache siempre quiere una clave que no esté vacía. De lo contrario, arroja una excepción:
IllegalArgumentException: clave nula devuelta para la operación de caché (¿tal vez está utilizando parámetros con nombre en clases sin información de depuración?) madme.sharding.model.App)] caches=[appsCache] | clave='#resultado.uuid' | generador de claves='' | cacheManager='redisCacheManager' | cacheResolver='' | condición='' | a menos que = '#p0.uuid == nulo' Ref: 1490185514616_gcfal96
Pensé que si especificaba la condición 'a menos que' como se muestra a continuación, simplemente debería ignorar este CachePut sin generar ninguna excepción.
// I've tried #result.uuid and #p0.uuid, same output @CachePut(value = APPS_CACHE, cacheManager = "redisCacheManager", key = "#result.uuid", unless = "#result.uuid == null") public App saveOrUpdateApp(App app) { return appRepository.saveAndFlush(app); }¿Alguien tiene alguna idea?
Gracias por adelantado.
'condition="#p0.uuid != null"' funcionó... No reconoció que la lista negra ('a menos que') y la lista blanca ('condición') no se verifican al mismo tiempo. 'condición' se aplica antes de la generación de claves, mientras que 'a menos que' se aplique después. Muchas gracias @M.Deinum