I'm not sure if it's required, but to delete the Layout object, I think you should locate it before delete.
Code:
Layout obj = session.load(Layout.class, new Long(id));
Then, to make cascade correctly for Campo, I believe you should use inverse="false" (or simply by not defining it in xml) in Layout.hbm.xml's <set>.
When you use inverse="true", you are saying that that relationship's side is just a mirror for the thrully mapped and persisted side. Any operations to the "inversed" collection will NOT reflect to the database.
Fix these things, and try again. :)
[]'s[/code]