一对一唯一外键关联映射实际上是多对一关联映射的特例。
可以采用many-to-one标签,指定多的一端的unique=true,这样就限制了多的一端的多重性唯一。
通过这种手段映射一对一唯一外键关联。
<many-to-one name="idCard"
unique=
"true"
/>
一对一唯一外键关联双向,需要在另一端(idCard),添加<one-to-one>标签,指示hibernate如何加载其关联对象,默认根据主键加载,外键关联映射中,因为两个实体采用的是person外键维护的关系,所以不能指定主键加载person,而要根据person的外键加载,所以采用如下映射方式:
<one-to-one name="person" property-ref="idCard">
一:实体类:
package com.tao.hibernate.one2one2;
public class IdCard2 {
private Integer id;
private String cardNo;
private Person2 person;
public IdCard2() {
super();
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getCardNo() {
return cardNo;
}
public void setCardNo(String cardNo) {
this.cardNo = cardNo;
}
public Person2 getPerson() {
return person;
}
public void setPerson(Person2 person) {
this.person = person;
}
}
package com.tao.hibernate.one2one2;
public class Person2 {
private Integer id;
private String name;
private IdCard2 idCard;
public Person2() {
super();
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public IdCard2 getIdCard() {
return idCard;
}
public void setIdCard(IdCard2 idCard2) {
this.idCard = idCard2;
}
}
二:映射文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.tao.hibernate.one2one2">
<class name="IdCard2" table="t_IdCard2">
<id name="id" column="id" type="integer">
<generator class="native" />
</id>
<property name="cardNo" column="cardNo" />
<one-to-one name="person" property-ref="idCard" />
</class>
</hibernate-mapping>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.tao.hibernate.one2one2">
<class name="Person2" table="t_Person2">
<id name="id" column="id" type="integer">
<generator class="native">
</generator>
</id>
<property name="name" column="name" />
<many-to-one name="idCard" unique="true"/>
</class>
</hibernate-mapping>
三:测试类:
package com.tao.hibernate.one2one2;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;
import com.tao.hibernate.HibernateUtils;
public class TestMain {
@Test
public void testSave() {
Session session = HibernateUtils.getFactory().openSession();
IdCard2 idCard = new IdCard2();
idCard.setCardNo("100");
Person2 person = new Person2();
person.setName("Tao");
person.setIdCard(idCard);
Transaction ts = session.beginTransaction();
ts.begin();
session.save(idCard);
session.save(person);
ts.commit();
}
@Test
public void testLoad() {
Session session = HibernateUtils.getFactory().openSession();
Person2 person = (Person2) session.load(Person2.class, 1);
//System.out.println(person.getName());
System.out.println(person.getIdCard().getCardNo());
}
@Test
public void testLoad2() {
Session session = HibernateUtils.getFactory().openSession();
IdCard2 idCard = (IdCard2) session.load(IdCard2.class, 1);
System.out.println(idCard.getCardNo());
System.out.println(idCard.getPerson().getName());
}
}
分享到:
相关推荐
本篇主要探讨的是Hibernate中的一对一(OneToOne)关系映射,特别是唯一外键关联(UniDirectional and Bidirectional Association)的情况。我们将深入理解这种关联方式的配置、实现以及它在实际应用中的价值。 1. ...
Hibernate一对一关联概述 一对一关联分为两种类型:共享主键关联(Primary Key Join)和唯一外键关联(Unique Foreign Key Join)。在本例中,我们讨论的是后者,即通过一个独立的外键字段在两个表之间建立一对一...
一、Hibernate一对一关联类型 一对一关联在现实世界中很常见,例如一个人只有一个身份证,一个身份证也只能属于一个人。在数据库设计中,这种关系通常通过主键和外键的方式实现,其中一方的主键作为另一方的外键,...
在本文中,我们将详细介绍Hibernate一对一唯一外键关联映射的概念、配置方法和实践应用。 一对一唯一外键关联映射的概念 在Hibernate中,一对一唯一外键关联映射是指两个实体之间的关联关系,其中一个实体作为外键...
在本案例中,我们将详细探讨“hibernate一对一唯一外键关联映射(单项关联)”。 首先,一对一关联分为两种类型:单向关联和双向关联。单向关联意味着在一个实体类中存在对另一实体的引用,而另一实体类中没有相应...
总的来说,Hibernate的一对一唯一外键关联(单向关联)是通过在一方实体中定义另一方实体的引用,并通过注解或XML映射文件进行配置来实现的。这种关联方式简化了对象关系的管理,但同时也需要开发者在操作关联对象时...
本篇将深入探讨Hibernate中的一对一唯一外键关联映射,特别是双向关联的实现。 ### 1. 一对一关联概述 一对一关联意味着一个实体只能与另一个实体的单一实例相关联,这种关系通常出现在两个表之间,其中一个表的...
总结,主键关联和唯一外键关联都是Hibernate实现一对一映射的有效方式,各有优缺点。开发者应根据具体业务需求和数据模型,选择合适的关联策略。理解并熟练运用这些关联映射,对于提升Java后端开发的效率和代码质量...
1. **一对一外键关联配置**:在Hibernate中,可以通过在映射文件中添加`<one-to-one>`标签或在实体类上使用`@OneToOne`注解来定义一对一关联。关联的外键通常位于被引用的实体(“一对一”关系的“一”端)中。 2. ...
在Java的持久化框架Hibernate中,一对一(One-to-One)关联是常见的关系映射类型,它用于表示两个实体之间存在唯一的对应关系。本篇将详细讲解如何使用Hibernate进行一对一单向外键关联,并且该关联涉及到联合主键的...
本话题主要探讨的是Hibernate中的一种关联映射方式——一对一(One-to-One)单向外键关联。这种关联模式通常用于两个实体之间存在唯一对应的关系,例如一个用户对应一个唯一的账户。 在Hibernate中,一对一关联可以...
在本教程中,我们将深入探讨Hibernate中的一个关键概念——关系映射,特别是“一对一”双向外键关联。这种关联类型在数据库设计中很常见,尤其是在处理具有紧密耦合的实体时。Hibernate作为Java中广泛使用的对象关系...
**标题详解:**“Hibernate教程04_关系映射之一对一单向外键关联” 在Hibernate框架中,关系映射是数据库表之间的关联在对象模型中的体现。本教程重点讲解了一对一(One-to-One)单向外键关联的实现方法。在数据库...
在本案例中,我们将探讨如何在Hibernate中实现基于外键的双向一对一关联映射。 首先,我们来看一下双向一对一关联的基本概念。双向一对一关联意味着两个实体类A和B,它们之间存在一对一的关系,并且A能访问B,B也能...
在Java的持久化框架Hibernate中,一对一(One-to-One)关系是对象之间的关联类型之一,它代表了两个实体之间存在唯一的映射关系。在这种关系中,一个实体对应另一个实体的唯一实例。本篇将深入探讨在Hibernate中实现...
**标题:Hibernate一对一外键映射** 在关系型数据库中,一对一(One-to-One)关联是一种常见的关系,它表示两个实体之间存在着唯一的关系。Hibernate,作为Java领域中的一个流行的ORM(对象关系映射)框架,提供了...