`
lzkyo
  • 浏览: 468276 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hibernate中的对象one-to-one关系

阅读更多
(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:

Java代码 复制代码
  1. <id name="Id" type="java.lang.Long" column="ID">   
  2.     <generator class="native"/>   
  3. </id>   
  4.   
  5. <one-to-one name="address"    
  6.             class="Address"    
  7.             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:

Java代码 复制代码
  1. <id name="Id" type="java.lang.Long"  column="ID">   
  2.      <generator class="foreign">    
  3.               <param name="property">customer</param>    
  4.           </generator>    
  5. </id>   
  6.   
  7. <one-to-one name="customer"    
  8.             class="Customer"    
  9.             constrained="true"  
  10.             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

Java代码 复制代码
  1. <id   
  2.     name="Id"  
  3.     type="java.lang.Long"  
  4.     column="ID"  
  5.     >   
  6.     <generator class="native"/>   
  7. </id>   
  8.   
  9. <many-to-one   
  10.     name="Address"  
  11.     class="Address"  
  12.     cascade="all"  
  13.     unique="true"  
  14.     >   
  15.     <column name="ADDRESS_ID"/>   
  16. </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

Java代码 复制代码
  1. <id   
  2.     name="Id"  
  3.     type="java.lang.Long"  
  4.     column="ID"  
  5.     >   
  6.     <generator class="native"/>   
  7. </id>   
  8.   
  9. <one-to-one   
  10.     class="Customer"  
  11.     name="customer"  
  12.     property-ref="Address"  
  13. />  
<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 one-to-many / many-to-one关系映射

    在Hibernate的hbm.xml文件中,一对一关系通过&lt;one-to-one&gt;标签,一对多关系通过、、或标签来定义。需要详细指定实体类名、主键列名以及关联的外键列名。 2. 注解配置: 在实体类上直接使用@OneToOne、@OneToMany等...

    (4)Hibernate中的many-to-one和one-to-many关系

    相反,one-to-many关系表示在一个实体类中,一个实例可以与另一个实体类的多个实例相关联。例如,一个部门可以有多名员工,而一个员工只属于一个部门。在Hibernate中,我们通过`@OneToMany`注解来实现这种关系。此...

    (3)Hibernate3.2 中的 one-to-one关系

    在Java的持久化框架Hibernate中,一对一(One-to-One)关联是对象关系映射(ORM)中的一个重要概念,它用于表示两个实体之间一对一的映射关系。本篇将深入探讨Hibernate 3.2中的一对一关系,以及如何在实际项目中...

    Hibernate应用例子one-to-one

    在Hibernate中,"one-to-one"(一对一)关联是一种常见的关系映射类型,表示两个实体之间存在一对一的对应关系,就像一个人只能有一个护照,或者一辆车只能属于一个人一样。 一、一对一关系的配置 1. **注解配置**...

    hibernate学习5之one-to-many双向关联.docx

    在Hibernate框架中,双向一对多关联映射是常见的对象关系映射(ORM)方式,用于在Java对象模型中表示数据库中的两个实体之间的多对一关系。在这个场景中,"一"端通常指的是一个实体可以拥有多个另一个实体的实例,而...

    hibernate many-to-one(多对一)及 cascade(级联).doc

    在Hibernate中,可以通过 `&lt;many-to-one&gt;` 或者 `&lt;one-to-many&gt;` 标签中的 `cascade` 属性来指定这种行为。 #### 代码示例解析 在提供的代码示例中,`&lt;many-to-one&gt;` 标签中包含了 `cascade` 属性的注释示例,但是...

    Hibernate one-to-many-annotation

    在Hibernate中,`one-to-many`关系是常见的实体间关系之一,表示一个实体可以与多个其他实体相关联。本文将深入探讨`Hibernate one-to-many`注解的使用和实现细节。 ### 一、`@OneToMany`注解概述 `@OneToMany`...

    Hibernate-one-to-many

    本文将深入探讨Hibernate中一对多(One-to-Many)关系的处理方式,特别是通过外键映射和inverse属性的应用场景。 #### 一对多关系概念 一对多关系在数据库设计中非常常见,它指的是一个实体可以与多个其他实体关联...

    hibernate one-to-many 单/双向关联映射配置心得

    本文主要关注Hibernate中的一个核心概念——一对一(One-to-One)、一对多(One-to-Many)和多对一(Many-to-One)关联映射,特别是关于“一到多”单向和双向关联映射的配置心得。 首先,让我们了解“一到多”关联...

    Hibernate应用例子many-to-many

    本示例将详细讲解如何在Hibernate中实现多对多(many-to-many)的关系映射。 在数据库设计中,多对多关系是指两个实体之间存在多个关联,比如学生和课程的关系,一个学生可以选修多门课程,一门课程也可以被多个...

    Hibernate Mapping Many-to-One 实例 内附源代码及附件下载

    对于`Department`,映射文件中会有一个`&lt;class&gt;`标签,其中包含`&lt;set&gt;`标签来定义员工集合,并且使用`&lt;many-to-many&gt;`或`&lt;one-to-many&gt;`标签来映射与`Employee`的关系。对于`Employee`,我们使用`&lt;class&gt;`标签,并在...

    学习hibernate必看ppt--总结的很全面

    2. **关联映射**:Hibernate支持多种关系映射,包括一对一(One-to-One)、一对多(One-to-Many)、多对一(Many-to-One)和多对多(Many-to-Many)。这部分可能详细解释了这些关系的配置,以及在Java对象和数据库表...

    Hibernate one to one详细配置

    在Java的持久化框架Hibernate中,一对一(One-to-One)关联映射是常见的关系映射类型之一。它用于表示两个实体之间一对一的关联关系,即一个实体对应另一个实体的唯一实例。下面将详细介绍Hibernate中如何进行一对一...

    hibernate对象三状态及OneToOne&OneToMany&ManyToMany

    以上就是关于Hibernate对象三状态以及OneToOne、OneToMany和ManyToMany关系映射的详细讲解,希望对你理解Hibernate的工作原理和实践有所帮助。在实际开发中,根据业务需求灵活运用这些关系映射,能够有效地管理和...

    Hibernate one to many(many to one) 配置

    标题"Hibernate one to many(many to one) 配置"涉及到的是关系型数据库在Java中的持久化框架Hibernate中的两种关联映射关系:一对一(One-to-One)和多对一(Many-to-One)。在数据库设计中,这种关系很常见,例如...

    hibernate-one-to-one-uni

    本项目“hibernate-one-to-one-uni”专注于探讨和实现Hibernate框架中的一对一(One-to-One)关系映射,这种关系在数据库设计中比较常见,用于表示两个实体之间一对一的联系。 一对一关系映射在Hibernate中分为两种...

    hibernate many to one

    依旧无需特殊配置,除非你需要定义反向关系(one-to-many)。 ### 3. 关联的生命周期管理 在`CascadeType.ALL`中,`Cascade`属性定义了对关联对象的操作应该如何传播。这里包括了对`Class`的CRUD操作。例如,当...

    Hibernate关联映射-one to one单向外键关联

    本话题主要探讨的是Hibernate中的一种关联映射方式——一对一(One-to-One)单向外键关联。这种关联模式通常用于两个实体之间存在唯一对应的关系,例如一个用户对应一个唯一的账户。 在Hibernate中,一对一关联可以...

    hibernate学生-课程-成绩

    - 一对多(One-to-Many)关系:一个学生可以选修多门课程,体现在学生实体中使用@OneToMany注解,课程实体中使用@ManyToOne注解,通过外键关联。 - 多对一(Many-to-One)关系:一门课程可以被多个学生选修,体现...

    Hibernate-One-To-One

    本主题主要关注的是Hibernate中的一个关键概念——一对一(One-To-One)关联映射。一对一关联是两个实体之间的一种关系,其中每个实体最多只能与另一个实体的单个实例相关联。 ### 一对一关联的基本概念 一对一关联...

Global site tag (gtag.js) - Google Analytics