我使用多對嘗試這個簡單的單向一到一個關係一個一對一的映射使用唯一約束無法正常運行
人---->地址
獨特的約束映射。
這是我的映射看起來像在Person.hbm.xml:
<class name="Person" table="PERSON">
<many-to-one name="address" column="ADDRESS_ID" cascade="all" not-null="true" unique="true"/>
我想這應該允許每個人只有一個唯一的地址 - 沒有兩個人可以共用一個地址。
因此,下面的代碼應該失敗。但是在這段代碼中,Hibernate允許Johns保持同一地址。
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();
請讓我知道我在這裏錯過了什麼?
您是否在數據庫模式中添加了唯一約束? – 2011-04-12 14:51:29
No ..:-0但是想知道如果Hibernate的unique =「true」會依賴於模式約束本身,那麼它有什麼用處?那麼唯一=「真」只是一個標記? – haps10 2011-04-12 14:57:55