Я использую 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)
Будет ли возвращаемое значение отражать строки, измененные в БД, или только постоянный контекст?