I think you may know this but I like to share with you all..
In spring normaly we use this code for transaction manager:-
DefaultTransactionDefinition td = new DefaultTransactionDefinition();
td.setPropagationBehavior(3); //transaction level
TransactionStatus ts = transactionManager.getTransaction(td);
If we create transaction inside transaction, it will run into deadlock situation.
The locks to tables not get released.