Ошибка, кажется, в коде, который вы пропустили ...
Я предполагаю, что проект действительно вышел из базы данных (делая постоянный noop), иначе вы должны получить исключение гибернации при попытке обновить сущность, которая еще не была зафиксирована.
Кажется, здесь просто некоторая путаница относительно разницы между JDBC и ORM и того, что на самом деле делает EntityManager. em.persist не является вставкой SQL или обновлением SQL. Там написано: «Возьми эту новую сущность и переведи ее в управляемое состояние». Обычно это в конечном итоге приводит к вставке SQL, но это не означает, что это означает на уровне приложения.
Похоже, вы, по сути, говорите о гибернации: «Я внес некоторые изменения в это, в следующий раз, когда сеанс синхронизируется, пожалуйста, сохраните их, о, вы знаете, что, я передумал, вернуться к тому, что в базе данных» em.persist напрямую ничего не помещает в базу данных, что там, вероятно, все еще "ничто".
Попробуйте добавить em.flush перед обновлением, и вы должны увидеть своих пользователей.
(Вы ничего не сказали о том, как настроен ваш сеанс или как вы управляете транзакциями, поэтому я предполагаю, что все это в одной транзакции.)