【发布时间】:2011-04-12 14:43:29
【问题描述】:
我正在尝试这种简单的单向一对一关系
人---->地址
使用具有唯一约束的多对一映射。
这就是我的映射在 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();
请让我知道我在这里缺少什么?
【问题讨论】:
-
您是否在数据库架构中添加了唯一约束?
-
No.. :-0 但想知道如果 Hibernate 的 unique="true" 依赖于模式约束本身,它在哪里有帮助?那么 unique="true" 只是一个标记吗?