Ответ 1
Вы очищаетесь, но вы не совершаете - или иначе прекратите транзакцию/сеанс, который, скорее всего, настроен для автоматической фиксации.
Да, после вызова flush()
, СУБД теперь узнает о ваших данных, но, следуя стандартам ACID, никакие другие сеансы базы данных не будут видеть эти данные до тех пор, пока СУБД не сообщит об этом.
Не зная дополнительной информации об архитектуре, лежащей в основе остальной части вашего приложения, и т.д., вы, вероятно, хотите сделать что-то вроде:
em.getTransaction().commit();