In a BMP, if we throw an EJBException all the changes would be rolled back by the container, right? Or do we have to write code to do that? I was reading through your reply in the list and I have a doubt regarding something regarding transaction handling in BMP entity beans. I am using the entity bean in a session bean and have two sql statements and one entity update. If one of the sql statements fails and the entity is updated , the changes are all rolled back, but in the case of the entity failure to update, the sql statement changes are not rolled back and I get an error saying System/communication error: Transaction was rolled back: Error preparing bean in stance: com.evermind.transaction.MarshallingXAException; nested exception is: com.evermind.transaction.MarshallingXAException The entity bean is throwing an EJBException back to the Session bean, but the session bean does not catch it and continues forward as if nothing happened. The funny thing is that the queries are placed like this sqlinsert 1....... entitybean update.... sqlinsert 2..... So the flow becomes sqlinsert 1 happens then sqlinsert 2 and only in the end does the entity bean throw the exception any idea why this happens? Can anyone help me on this. The BMP entity has persistence <persistence-type>Bean</persistence-type> Thanks Kind Regards Aby