Он будет вылетать когда будет выполняться insert/update, а они выполняются когда идёт ручной flush, либо при закрытии транзакции. Первого у тебя нет, а значит все выполнится при выходе из @Transactional
метода, а значит ловить внутри метода бесполезно