(1) 通过主健参考,限制2个数据表中的主健使用相同的值
create table CUSTOMER(
ID bigint not null auto_increment,
NAME varchar(15),
primary key (ID)
);
create table ADDRESS(
ID bigint not null auto_increment,
STREET varchar(128),
CITY varchar(128),
PROVINCE varchar(128),
primary key (ID)
);
Customer.hbm.xml:
- <id name="Id" type="java.lang.Long" column="ID">
-
<generator class="native"/>
- </id>
-
-
<one-to-one name="address"
-
class="Address"
-
cascade="all"/>
<id name="Id" type="java.lang.Long" column="ID">
<generator class="native"/>
</id>
<one-to-one name="address"
class="Address"
cascade="all"/>
Address.hbm.xml:
- <id name="Id" type="java.lang.Long" column="ID">
-
<generator class="foreign">
-
<param name="property">customer</param>
- </generator>
- </id>
-
-
<one-to-one name="customer"
-
class="Customer"
-
constrained="true"
-
outer-join="false"/> <!--通过一个外键引用对主键进行约束-->
<id name="Id" type="java.lang.Long" column="ID">
<generator class="foreign">
<param name="property">customer</param>
</generator>
</id>
<one-to-one name="customer"
class="Customer"
constrained="true"
outer-join="false"/> <!--通过一个外键引用对主键进行约束-->
Customer cus = new Customer();
cus.setName("logcd");
Address add = new Address();
add.setCity("成都");
add.setProvince("四川");
add.setCustomer(cus);
cus.setAddress(add);
customerDao.save(cus);
(2)把many-to-one设置unique="true",则这时候的many-to-one实质上就是one-to-one
create table ADDRESS(
ID bigint not null auto_increment,
STREET varchar(128),
CITY varchar(128),
PROVINCE varchar(128),
primary key (ID)
);
create table CUSTOMER(
ID bigint not null auto_increment,
NAME varchar(15),
ADDRESS_ID bigint,
foreign key (ADDRESS_ID) references ADDRESS(ID),
primary key (ID)
);
Customer.hbm.xml
- <id
-
name="Id"
-
type="java.lang.Long"
-
column="ID"
- >
-
<generator class="native"/>
- </id>
-
- <many-to-one
-
name="Address"
-
class="Address"
-
cascade="all"
-
unique="true"
- >
-
<column name="ADDRESS_ID"/>
- </many-to-one>
<id
name="Id"
type="java.lang.Long"
column="ID"
>
<generator class="native"/>
</id>
<many-to-one
name="Address"
class="Address"
cascade="all"
unique="true"
>
<column name="ADDRESS_ID"/>
</many-to-one>
Address.hbm.xml
- <id
-
name="Id"
-
type="java.lang.Long"
-
column="ID"
- >
-
<generator class="native"/>
- </id>
-
- <one-to-one
-
class="Customer"
-
name="customer"
-
property-ref="Address"
- />
<id
name="Id"
type="java.lang.Long"
column="ID"
>
<generator class="native"/>
</id>
<one-to-one
class="Customer"
name="customer"
property-ref="Address"
/>
Customer cus = new Customer();
cus.setName("jinming");
Address add = new Address();//如果是查询出来,unique="true",没作用???
add.setCity("chengdu");
add.setProvince("sichuan");
add.setCustomer(cus);
cus.setAddress(add);
customerDao.save(cus);
说明:hibernate的unique是给生成DDL的时候使用,所以需要检查下数据库的schema,那里加了unique约束才是有效的
MySQL:alter table your_table add unique (column_name)
相关推荐
在Hibernate的hbm.xml文件中,一对一关系通过<one-to-one>标签,一对多关系通过、、或标签来定义。需要详细指定实体类名、主键列名以及关联的外键列名。 2. 注解配置: 在实体类上直接使用@OneToOne、@OneToMany等...
相反,one-to-many关系表示在一个实体类中,一个实例可以与另一个实体类的多个实例相关联。例如,一个部门可以有多名员工,而一个员工只属于一个部门。在Hibernate中,我们通过`@OneToMany`注解来实现这种关系。此...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联是对象关系映射(ORM)中的一个重要概念,它用于表示两个实体之间一对一的映射关系。本篇将深入探讨Hibernate 3.2中的一对一关系,以及如何在实际项目中...
在Hibernate中,"one-to-one"(一对一)关联是一种常见的关系映射类型,表示两个实体之间存在一对一的对应关系,就像一个人只能有一个护照,或者一辆车只能属于一个人一样。 一、一对一关系的配置 1. **注解配置**...
在Hibernate框架中,双向一对多关联映射是常见的对象关系映射(ORM)方式,用于在Java对象模型中表示数据库中的两个实体之间的多对一关系。在这个场景中,"一"端通常指的是一个实体可以拥有多个另一个实体的实例,而...
在Hibernate中,可以通过 `<many-to-one>` 或者 `<one-to-many>` 标签中的 `cascade` 属性来指定这种行为。 #### 代码示例解析 在提供的代码示例中,`<many-to-one>` 标签中包含了 `cascade` 属性的注释示例,但是...
在Hibernate中,`one-to-many`关系是常见的实体间关系之一,表示一个实体可以与多个其他实体相关联。本文将深入探讨`Hibernate one-to-many`注解的使用和实现细节。 ### 一、`@OneToMany`注解概述 `@OneToMany`...
本文将深入探讨Hibernate中一对多(One-to-Many)关系的处理方式,特别是通过外键映射和inverse属性的应用场景。 #### 一对多关系概念 一对多关系在数据库设计中非常常见,它指的是一个实体可以与多个其他实体关联...
本文主要关注Hibernate中的一个核心概念——一对一(One-to-One)、一对多(One-to-Many)和多对一(Many-to-One)关联映射,特别是关于“一到多”单向和双向关联映射的配置心得。 首先,让我们了解“一到多”关联...
本示例将详细讲解如何在Hibernate中实现多对多(many-to-many)的关系映射。 在数据库设计中,多对多关系是指两个实体之间存在多个关联,比如学生和课程的关系,一个学生可以选修多门课程,一门课程也可以被多个...
对于`Department`,映射文件中会有一个`<class>`标签,其中包含`<set>`标签来定义员工集合,并且使用`<many-to-many>`或`<one-to-many>`标签来映射与`Employee`的关系。对于`Employee`,我们使用`<class>`标签,并在...
2. **关联映射**:Hibernate支持多种关系映射,包括一对一(One-to-One)、一对多(One-to-Many)、多对一(Many-to-One)和多对多(Many-to-Many)。这部分可能详细解释了这些关系的配置,以及在Java对象和数据库表...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是常见的关系映射类型之一。它用于表示两个实体之间一对一的关联关系,即一个实体对应另一个实体的唯一实例。下面将详细介绍Hibernate中如何进行一对一...
以上就是关于Hibernate对象三状态以及OneToOne、OneToMany和ManyToMany关系映射的详细讲解,希望对你理解Hibernate的工作原理和实践有所帮助。在实际开发中,根据业务需求灵活运用这些关系映射,能够有效地管理和...
标题"Hibernate one to many(many to one) 配置"涉及到的是关系型数据库在Java中的持久化框架Hibernate中的两种关联映射关系:一对一(One-to-One)和多对一(Many-to-One)。在数据库设计中,这种关系很常见,例如...
本项目“hibernate-one-to-one-uni”专注于探讨和实现Hibernate框架中的一对一(One-to-One)关系映射,这种关系在数据库设计中比较常见,用于表示两个实体之间一对一的联系。 一对一关系映射在Hibernate中分为两种...
依旧无需特殊配置,除非你需要定义反向关系(one-to-many)。 ### 3. 关联的生命周期管理 在`CascadeType.ALL`中,`Cascade`属性定义了对关联对象的操作应该如何传播。这里包括了对`Class`的CRUD操作。例如,当...
本话题主要探讨的是Hibernate中的一种关联映射方式——一对一(One-to-One)单向外键关联。这种关联模式通常用于两个实体之间存在唯一对应的关系,例如一个用户对应一个唯一的账户。 在Hibernate中,一对一关联可以...
- 一对多(One-to-Many)关系:一个学生可以选修多门课程,体现在学生实体中使用@OneToMany注解,课程实体中使用@ManyToOne注解,通过外键关联。 - 多对一(Many-to-One)关系:一门课程可以被多个学生选修,体现...
本主题主要关注的是Hibernate中的一个关键概念——一对一(One-To-One)关联映射。一对一关联是两个实体之间的一种关系,其中每个实体最多只能与另一个实体的单个实例相关联。 ### 一对一关联的基本概念 一对一关联...