gpt4 book ai didi

java - 使用唯一约束的一对一映射未按预期工作

转载 作者:行者123 更新时间:2023-12-04 06:29:16 25 4
gpt4 key购买 nike

我正在尝试这种简单的单向一对一关系

人 ----> 地址

使用具有唯一约束的多对一映射。

这就是我的映射在 Person.hbm.xml 中的样子:

<class name="Person" table="PERSON">
<many-to-one name="address" column="ADDRESS_ID" cascade="all" not-null="true" unique="true"/>

我认为这应该只允许每个人有一个唯一的地址——没有两个人可以共享一个公共(public)地址。

所以,下面的代码应该会失败。但是在这段代码中,Hibernate 允许两个 John 留在同一个地址。

    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();

请让我知道我在这里缺少什么?

最佳答案

阅读http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#d0e7576 , 并找到 5.1.7.1 段中的多对一描述。它说:

unique (optional): enables the DDL generation of a unique constraint for the foreign-key column. By allowing this to be the target of a property-ref, you can make the association multiplicity one-to-one.

这意味着它被 Hibernate 的数据库模式生成工具用来添加唯一约束。如果你不使用它,那么你必须自己添加这个约束。

关于java - 使用唯一约束的一对一映射未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5637114/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com