Hibernate one-to-one one-to-many-to-multi-instance engineering