У меня есть приложение весенней загрузки с контроллером отдыха.Пользователь - модель
Остальные контроллеры предназначены для getAllNotes (), getNoteById (), updateNoteById ()
@Cacheable(key="'#id'")
@GetMapping("/notes/{id}")
public Note getNoteById(@PathVariable(value = "id") Long noteId)
{
return noteRepository.findById(noteId).get();
}
@Cacheable()
@GetMapping("/notes")
public List<Note> getAllNotes()
{
return noteRepository.findAll();
}
@CachePut(key="'#id'")
@PutMapping("/notes/{id}")
public Note updateNoteById(@PathVariable(value = "id") Long noteId, @Valid @RequestBody Note noteDetails)
{
Note note = noteRepository.findById(noteId).get();
...
return noteRepository.save(note);
}
Теперь моя проблема заключается в том, что индивидуально, если я получаю его, получается из кеша,И даже после обновления также, если я пытаюсь получить, это согласуется с измененными данными
Но, если я обращаюсь к getAllNotes (), то он получает данные из базы данных в первый раз и в следующий раз из кэша.,Но конкретное поле, которое я обновляю, не обновляется в этом.
шаги, за которыми я следую
getAllNotes () // [{"id": 11, "title": "title11"}, {"id": 12, "title": "title12"}]
getNoteById (11) // {"id": 11, "title": "title11"}
updateNoteById (11, Note note) // note - {"id": 11, "title": "title1111"}
getNoteById (11) // {"id": 11,"title": "title1111"}
getAllNotes () // [{"id": 11, "title": "title11"}, {"id": 12, "title": "title12"}]
// ожидается [{"id": 11, "title": "title1111"}, {"id": 12, "title": "title12"}]
Он не обновляет первые данные, так как я думаю, что он принимает весь вывод getAllNotes () как один объект кеша, а не как комбинацию отдельного кеша (byId) и не сохраняет ссылку на отдельный кеш
Но, веб-сайт , который я видел, может этого добиться