In my experience, this is an excellent use for mock objects. Specifically cases where you need to cause a specific failure in order to test how your object, in the case of a unit test, or set of objects, in the case of integration tests, will handle a particular failure. It is better to be in complete control of the failure rather than forcing a specific case of the failure in your integration tests.
I recently worked with an entity framework where I encountered a similar dilemma. By creating mock objects for the entities I was able to force an exception to be thrown during on method calls while running certain tests in order to test failure conditions interacting with the database. This isn't an answer that deals with Spring's Transactional Framework, but I am sure the same principles apply.