Я использую Hibernate вместе с HibernateTransactionManager, поэтому я не слишком знаком с тем, как работает менеджер транзакций JDBC. Вы проверили стек вызовов, чтобы увидеть, есть ли там TransactionInterceptor? Если это так, тогда работает транзакционная аннотация, и вы можете просто упустить что-то еще. Если вы не искали его, с чего вы взяли, что он не работает? Чтобы устранить очевидное, вы явно установили параметр в конфигурации JDBC для отключения автоматической фиксации?