#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);