Spring Boot + JPA - обновление CrudRepository и затем чтение - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть сценарий, в котором необходимо сначала обновить некоторые записи базы данных на основе критериев, а затем прочитать эти записи из базы данных. Я использую CrudReposirtory, и в моем контроллере у меня есть служба, которая вызывает метод хранилища, используя @Query для обновления записей, и на следующей строке я пытаюсь прочитать те же записи, но записи не обновляются, если я не из этого метода контроллера.

1 Ответ

0 голосов
/ 16 ноября 2018

Вы должны использовать @Modifying в сочетании с @Query, если выполняете оператор UPDATE.

Из документации:

@Modifying
@Query("update User u set u.firstname = ?1 where u.lastname = ?2")
int setFixedFirstnameFor(String firstname, String lastname);

Это вызовет запросаннотируется для метода как обновляющий запрос вместо выбранного.Поскольку EntityManager может содержать устаревшие сущности после выполнения модифицирующего запроса, мы автоматически очищаем его (подробности см. В JavaDoc для EntityManager.clear ()).Это эффективно отбросит все невыгруженные изменения, все еще ожидающие в EntityManager.Если вы не хотите, чтобы EntityManager очищался автоматически, вы можете установить для атрибута clearAutomatics @Modifying аннотации значение false;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...