I did find the reason. I had an SQL Query and when I was executing the query. I was closing the session. My method to close the session had a call to flush in it and hence it was failing. Bottom line is that if you are using Transactions commit() will do the flush you don't have to call flush and while closing session please close the session only don't do anything other than that.