We ran into an issue with the 2.4.0 release because it replaced DataSourceTransactionManager with JdbcTransactionManager. The latter does exception translation:
This led to a DuplicateKeyException exception being thrown rather than a TransactionSystemException. We didn't expect this because we had explicitly disabled exception translation:
spring.dao.exceptiontranslation.enabled=false
Perhaps DataSourceTransactionManager should continue to be used if this property is set to false?