Я пробую это простое однонаправленное отношение один-к-одному
Персона ----> Адрес
с использованием сопоставления многие-к-одному с уникальным ограничением.
Вот так выглядит мое сопоставление в Person.hbm.xml:
<class name="Person" table="PERSON">
<many-to-one name="address" column="ADDRESS_ID" cascade="all" not-null="true" unique="true"/>
Я думаю, что это должно позволять использовать только один уникальный адрес на человека - никакие два человека не могут иметь общий адрес.
Итак, следующий код должен завершиться ошибкой.Но в этом коде Hibernate позволяет обоим Джонам оставаться по одному адресу.
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction transaction = session.beginTransaction();
Address address = new Address("Bond Street", "London", 121212);
Person person1 = new Person("John Doe", address);
Person person2 = new Person("John McClane", address);
session.save(person1);
session.save(person2);
transaction.commit();
session.close();
Пожалуйста, дайте мне знать, что мне здесь не хватает?