When you made a bidirectional relationship you need to put inverse=true otherwise hibernate is going to try to do a double access and that is why you are getting a exception. Hibernate needs to know which side of the relationship is the one who has the control of saving and updating.