Некоторое запутанное объяснение: flush(); Очистка — это процесс синхронизации базового постоянного хранилища с сохраняемым состоянием, хранящимся в памяти. Он будет обновлять или вставлять в ваши таблицы в текущей транзакции, но может не фиксировать эти изменения.
Если изменения в любом случае будут сохраняться в базе данных только после коммита, то зачем сбрасывать в середине кода.
И после запуска сброса, если в управляемый объект будут внесены какие-либо изменения, это вызовет исключение или они будут синхронизированы, а затем будут сохранены. Если они синхронизируются, то опять же, зачем сбрасывать в первую очередь.