Прежде всего, вы никогда не проверяете, возвращает ли e.getCause () значение null или нет.Если он возвращает null, ваш код уязвим для NullPointerException
Второй момент: почему Spring меняет способ обработки исключений базы данных / jpa.Уже есть некоторые разговоры об этом.Например, LINK
Или, кроме того, вы можете обратиться к книге "Весна в действии" C. Walls , где в главе о JDBC мы можем прочитать.
(10.1.1 Знакомство с иерархией исключений для доступа к данным Spring)
С одной стороны, иерархия исключений в JDBC слишком общая - она совсем не иерархическая.С другой стороны, иерархия исключений Hibernate является собственностью Hibernate.Нам нужна иерархия исключений доступа к данным, которые являются описательными, но не связаны напрямую с конкретной средой персистентности.
Я настоятельно рекомендую весь подраздел для понимания этой темы.