Как использовать свойство объектов в качестве ключа для @CachePut?
public interface MyRespository extends CrudRepository<MyEntity, Long> {
@CachePut(value = "mycache", key = "id")
@Override
public <S extends MyEntity> S save(S entity);
}
@Entity
public class MyEntity {
@Id
private Long id;
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
}
Результат:
org.springframework.expression.spel.SpelEvaluationException: EL1008E: (pos 0): не удается найти свойство или поле 'id ' для объекта типа 'org.springframework.cache.interceptor.CacheExpressionRootObject' - может быть, не публично?
1 ответ
Решение
Доступ к объекту по индексу с key = "#a0.id"
работал, но я до сих пор не знаю, почему невозможно получить доступ к объекту по его имени.