Проблема с извлечением обновленных данных сразу после обновления Spring Data Jpa

#java #hibernate #spring-data-jpa #spring-data

Вопрос:

Я обновляю с помощью @Modifying, и сразу после обновления я получаю данные с помощью репозитория. Но полученные данные-это не обновленные данные, а данные до завершения обновления. Когда я получаю то же самое с помощью другого API GET, то обновленные данные извлекаются, но не только после обновления тем же методом.

Мой метод обновления класса обслуживания:

 public Response update(Integer value, Long id) {

    repository.updateValue(value, id);
    Response res = repository.findById(id);
    return res;
}
 

Метод обновления класса моего репозитория:

 @Transactional
@Modifying
@Query(value = "update T1 set value = :value where id = :id", 
nativeQuery = true)
int updateValue(Integer value, Long id);
 

Как уже упоминалось, я получаю предыдущие значения в «res».
Кто-нибудь может помочь с этой проблемой?

Комментарии:

1. Является ли ваша служба аннотированной транзакцией ?

2. ДА. На самом деле я только сейчас нашел ответ. Мне нужно было автоматически добавить clear в аннотацию @Modifying, чтобы обновить контекст. Вот так: @Изменение(автоматически = верно). Хотя спасибо за помощь.

3. Если ваша проблема решена, вы можете опубликовать решение в ответе

Ответ №1:

После добавления clearAutomatically=true в аннотации @Modifying обновление сработало просто отлично.

 @Transactional
@Modifying(clearAutomatically = true)
@Query(value = "update T1 set value = :value where id = :id", 
nativeQuery = true)
int updateValue(Integer value, Long id);