Тут главная ошибка - это использование богомерзкого гибернейта.
0. Главное, что нужно понять: БД - это не часть приложения, это внешний сервис. Не нужно связывать свое приложение намертво с внешними сервисами, тем более размазывать логику между ними.
1. Если вам необходимы поля updatedAt и createdAt в вашей доменной модели, то и заполнять, и изменять их лучше на своей стороне, а не ждать когда это соизволит сделать БД или ваша ОРМ.
2. Кажется классным, на первый взгляд, если вы делаете операцию сохранения и при этом получаете еще апдейт вашей модели, но это все сайд-эффект, во первых, во-вторых не очевидное поведение, в третьих ни разу не потоко-безопасно и вообще все вместе зловонный, потенциально опасный код, который сулит непредсказуемые последствия в проде.