This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
You are using cascade="all" on the many side of the relationship, I don't think that the right thing to do. Do you really want to persist an Address object when Student object is persisted or delete an Address object when Student object is deleted??