`

OneToOne主键关联

阅读更多

首先来看表的关系:

表1:

Husband

husband_id<<pk>>

name


表2

Wife

wife_id <<pk>><<fk>>
name



Husband类

@Entity
public class Husband {
	@Id
	@GeneratedValue
	private int id;
	private String name;
	@OneToOne(cascade = CascadeType.ALL)
	@PrimaryKeyJoinColumn
	private Wife wife;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Wife getWife() {
		return wife;
	}

	public void setWife(Wife wife) {
		this.wife = wife;
	}

}

 

Wife类

@Entity
public class Wife {
	@Id
	@GeneratedValue(generator = "myForeignGenerator")
	@org.hibernate.annotations.GenericGenerator(name = "myForeignGenerator", strategy = "foreign", parameters = @Parameter(name = "property", value = "husband"))
	private int id;
	private String name;
	@OneToOne(optional = false, cascade = CascadeType.ALL)
	@PrimaryKeyJoinColumn
	private Husband husband;

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Husband getHusband() {
		return husband;
	}

	public void setHusband(Husband husband) {
		this.husband = husband;
	}
}

 

wife类中的

@Id
 @GeneratedValue(generator = "myForeignGenerator")
 @org.hibernate.annotations.GenericGenerator(name = "myForeignGenerator", strategy = "foreign", parameters = @Parameter(name = "property", value = "husband"))
 private int id;

 

定义了外键的生成策略,这样可以在级联插入时保持husband的主键和wife的外键(也是主键)相同。

 

@Test
	public void testOneToOnePK() {
		OneToOne.PK.Husband husband = new OneToOne.PK.Husband();
		OneToOne.PK.Wife wife = new OneToOne.PK.Wife();
		husband.setName("me");
		wife.setName("mywife");

		wife.setHusband(husband);
		session.beginTransaction();
		session.save(wife);//级联插入husband
		// session.save(husband);
		session.getTransaction().commit();
	}

 

 

分享到:
评论

相关推荐

    hibernate使用主键关联的一对一关系

    在这个场景中,“hibernate使用主键关联的一对一关系”指的是通过共享主键来实现两个实体类之间的这种一对一绑定。下面我们将深入探讨这一主题。 首先,我们需要理解一对一关系的概念。在数据库中,一对一关系意味...

    Hibernate 一对一关联映射(主键关联VS唯一外键关联)

    本篇文章将深入探讨两种实现一对一关联的方式:主键关联(Primary Key Join)和唯一外键关联(ForeignKey Join),并结合源码和实际工具进行详细讲解。 一、主键关联(Primary Key Join) 1. 主键关联的概念: ...

    Hibernate一对一主键关联映射(双向关联)

    标题"Hibernate一对一主键关联映射(双向关联)"中的"主键关联"指的是两个实体通过共享相同的主键来建立关联。"双向关联"则意味着在两个实体类中,都可以直接访问到对方的实例,即在实体A中有一个对实体B的引用,...

    hibernate一对一主键关联映射(单项关联)

    本篇将深入探讨在Hibernate中实现一对一主键关联映射的单项关联方式。这种关联意味着两个实体类共享相同的主键,即一个实体类的一个实例对应另一个实体类的唯一实例。 首先,我们要明确一对一主键关联映射的基本...

    hibernate一对一主键关联映射(双项关联)

    主键关联映射是通过将两个实体类的主键相互引用来实现一对一关系的。这种映射方式可以分为单向和双向,而这里我们关注的是双向关联,即两个实体都可以直接访问对方。 二、配置方式 1. **配置实体类** 在两个实体类...

    Hibernate教程07_关系映射之一对一双向主键关联

    在本教程中,我们将深入探讨Hibernate中的一个关键概念——关系映射,特别是“一对一双向主键关联”。这种关联类型是数据库设计中的常见模式,它允许两个实体类之间通过共享相同的主键来建立关联。在Java应用中,...

    hibernate一对一主键关联(注解版)

    对于一对一的主键关联,我们需要在两个实体类中都添加`@OneToOne`注解,并且在关联的一方使用`@PrimaryKeyJoinColumn`注解指定共享的主键字段。 2. **@OneToOne注解**: 在实体类中,`@OneToOne`注解用于声明一对...

    hibernate一对一主键关联代码实现

    本教程将详细解释如何通过代码实现Hibernate的一对一主键关联。 首先,我们需要理解一对一关联的含义:在数据库中,如果一个表的记录只能与另一个表的唯一一条记录对应,这就构成了主键关联的一对一关系。例如,一...

    Hibernate一对一主键关联映射(单向关联)

    本篇将重点讲解如何实现一对一主键关联映射的单向关联,并通过一个实际的例子来帮助理解。 在一对一主键关联映射中,两个实体共享同一个主键,这意味着它们在数据库中的记录具有相同的标识符。这种映射关系通常用于...

    Hibernate学习要点_one2one 一对一主键双线关联

    在深入探讨Hibernate中的一对一(One-to-One)主键双线关联机制之前,我们首先需要理解几个核心概念:Hibernate框架、实体关系映射以及主键关联的基本原理。Hibernate是Java平台下的一款开源对象关系映射(ORM)框架...

    Hibernate ORM - 一对一主键关联关系

    在一对一(One-to-One)主键关联关系中,两个实体类之间存在唯一对应的关系,通常一个实体对应另一个实体的一个实例,这种关系可以通过共享主键来实现。 在Hibernate中,一对一的主键关联关系可以通过以下几种方式...

    Hibernate教程06_关系映射之一对一单向主键关联

    4. **配置一对一关系映射:** 在Hibernate中,可以使用`@OneToOne`注解来声明一对一关联,并通过`@PrimaryKeyJoinColumn`注解指定主键关联的列。在拥有端实体中,可以直接使用这个注解,而在无拥端则不需要任何额外...

    hibernate 双向一对一基于主键的关联映射

    在Java持久化框架Hibernate中,双向一对一(OneToOne)基于主键的关联映射是一种常见的对象关系映射(ORM)技术。这种映射方式允许两个实体类之间建立一对一的关联,且关联是通过主键来实现的。接下来,我们将深入...

    Hibernate Annotation 共享主键一对一双向关联

    在上面的代码中,`Person`类中的`profile`属性使用了`mappedBy`属性,表明`Profile`是被关联方,`Profile`类中的`person`属性则使用了`@OneToOne`和`@PrimaryKeyJoinColumn`注解,表示`Person`是关联方,且主键和...

    hibernate_onetoone实例

    2. **共享主键关联**:两个实体类共用同一个主键,这意味着它们在数据库中实际上是同一个表的不同视图。这可以通过`@PrimaryKeyJoinColumn`注解来实现。 3. **具有关联映射的外键**:其中一个实体类有一个外键字段...

    hibernate主键一对一关联映射代码示例

    在Java的持久化框架Hibernate中,一对一(OneToOne)关联映射是一种常见的关系映射方式,用于表示两个实体之间一对一的关联关系。本示例将深入讲解如何在Hibernate中实现主键一对一关联映射,并通过代码示例进行解析...

    hibernate中基于主键的one2one

    在Java实体类中,你需要为一对一关联的字段添加`@OneToOne`注解,并且可以使用`@PrimaryKeyJoinColumn`来指定主键关联。例如: ```java @Entity public class EntityA { @Id @GeneratedValue(strategy = ...

    Hibernate一对一唯一外键关联映射(双向关联)

    首先,我们要明白一对一关联的两种类型:主键关联(Primary Key Association)和唯一外键关联(Unique Foreign Key Association)。主键关联是通过两个实体的主键相等来实现一对一关系,而唯一外键关联则是在一个...

Global site tag (gtag.js) - Google Analytics