Null key returned for cache operation
Не понимаю почему не отрабатывает кеширование.
Поставил cach над методом сохранения нового пользователя в БД h2. Пользователь не должен сохраняться если уже был сохранен с таким же полем #name
@Override
@Cacheable(cacheNames="users", key="#name")
public User create(User user) {
return repository.save(user);
}
@EnableCaching подключен.
аналогичный cach на получение отрабатывает
@Override
@Cacheable("users")
public User get(Long id) {
log.info("getting user by id: {}", id);
return repository.findById(id)
.orElseThrow(() -> new EntityNotFoundException("User not found by id " + id));
}
@Entity
@Table(name = "users")
@Data
@NoArgsConstructor
@ToString
public class User implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name")
private String name;
@Column(name = "email")
private String email;
public User(String name, String email) {
this.name = name;
this.email = email;
}
}
полный лог ошибки
java.lang.IllegalArgumentException: Null key returned for cache operation (maybe you are using named params on classes without debug info?)
Builder[public com.example.demo.entity.User com.example.demo.service.UserServiceImpl.create(com.example.demo.entity.User)] caches=[users] | key='#name' | keyGenerator='' | cacheManager='' | cacheResolver='' | condition='' | unless='' | sync='false'\n\tat org.springframework.cache.interceptor.CacheAspectSupport.generateKey(CacheAspectSupport.java:595)\n\tat org.springframework.cache.interceptor.CacheAspectSupport.findCachedItem(CacheAspectSupport.java:535)\n\tat org.springframework.cache.interceptor.CacheAspectSupport.execute(CacheAspectSupport.java:402)