Будет ли entityManager.createQuery (). ExecuteUpdate () выполняться немедленно в БД? - PullRequest
0 голосов
/ 29 октября 2018

Я использую hibernate jpa. Я пытаюсь выполнить запрос на обновление и хочу сказать, действительно ли обновление происходит или нет, основываясь на возвращаемом значении, потому что у меня может быть несколько процессов, выполняющих одинаковые обновления, и я только хочу продолжить процесс, который успешно обновляет запись. (Полагаясь на mysql, верните 1, если обновление прошло успешно, 0, если ничего не изменилось.)

int update = entityManager.createQuery("update Employee set name = \'xxxx\' where id=1").executeUpdate();

Мой вопрос заключается в том, что в режиме сброса по умолчанию (AUTO) будет ли этот запрос выполняться на БД? (если нет, имеет ли возвращаемое значение смысл?) Как насчет режима очистки = COMMIT? Нужно ли делать entityManager.flush ()? (Мне кажется, что выполнение запроса будет обходить entityManager, поэтому flush ничего не делает?)

Что если я использую репозиторий JPA вместо собственного запроса?

@Modifying
@Query("UPDATE Employee SET name = :name WHERE id = :id)
int update(long id, String name)

Будет ли возвращаемое значение отражать строки, измененные в БД, или только постоянный контекст?

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