nested transaction annotations is not supported in Hibernate. So the only way to solve the problem I found is using TransactionTemplate.
transactionTemplate.execute(new TransactionCallback<Void>() {
@Override
public Void doInTransaction(TransactionStatus status) {
}
});
All the code inside doInTransaction method is executed in transactional context. So in this way I can manage manually the exact point in which the method commit results.
Hope this can be helpful