`

OneToOne annotation 双向关联

 
阅读更多

 

package com.hibernate.entity;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToOne;

@Entity
public class Husband implements Serializable {
	
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 2476364405175138004L;

	
	private int id;
	
	private String name;
	
	private Wife wife;
	
	
	@Id
	@GeneratedValue
	public int getId() {
		return id;
	}

	public String getName() {
		return name;
	}

	@OneToOne
	public Wife getWife() {
		return wife;
	}

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

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

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

 

 

package com.hibernate.entity;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToOne;

@Entity
public class Wife implements Serializable {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 5270130768836331730L;

	
	private int id;
	
	private String name;
	
	private Husband husband;

	
	@Id
	@GeneratedValue
	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;
	}

	@OneToOne(mappedBy="wife")
	public Husband getHusband() {
		return husband;
	}

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

 

 

注意 :Wife类的getHusband()上用了mappedBy"wife"

这个意思是说,我这里的OneToOne就不用管了,只用Husband里的getWife()上的OneToOne关系

生成的表为Husband参考Wife,有了wifeid,才能有Husband

Husband为这个关系的拥有者

 

如果Wife类的getHusband()只有@OneToOne,没有mappedBy,那么生成的两张表都会有对方的外键,造成外键冗余。

 

 

分享到:
评论

相关推荐

    Hibernate Annotation 唯一外键一对一双向关联

    在Java的持久化框架Hibernate中,`@OneToOne`注解用于表示一对一的关联关系,而唯一外键一对一双向关联则是这种关系的一种具体实现方式。这篇文章将深入探讨这一概念,帮助你理解如何在实际开发中应用。 首先,我们...

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

    本文将详细讲解“Hibernate Annotation 中的共享主键一对一双向关联”。 首先,我们需要理解什么是共享主键(Shared Primary Key)。在一对一的关联关系中,如果两个实体共享同一个主键,那么这种关联被称为共享...

    Hibernate一对多(多对一)双向关联(annotation/xml)

    - 双向关联意味着两个实体都持有对方的引用,使得可以从任一侧导航到关联的实体。 - **注解配置**:在双向一对多关联中,一方使用`@ManyToOne`,另一方使用`@OneToMany`并设置`mappedBy`属性。对于多对一,一方用`...

    Hibernate_Annotation关联映射

    一对一关联可能是双向的,在双向关联中,有且仅有一端作为主体(owner)端存在:主体端负责维护联接列(即更新),对于不需要维护这种关系的从表则通过mappedNy属性进行声明。mappedBy的值指向主体的关联属性。例子...

    Hibernate一对一双向外键关联(annotation/xml)

    在这个场景下,每个实体都有一个引用指向另一个实体,形成双向关联。本篇文章将深入探讨如何使用注解和XML配置来实现这种关联。 一、注解方式实现一对一双向外键关联 1. 实体类注解配置 在两个实体类中,我们需要...

    Hibernate ORMapping Annotation XML PDF

    根据给定文件的信息,本文将详细介绍Hibernate ORM(Object Relational Mapping)中关于不同类型的关联映射方式,并结合Annotation和XML两种配置方式来进行说明。 ### 一、一对一单向外键关联 在一对一单向外键...

    Hibernate一对一单向外键关联(annotation/xml)

    在Hibernate中,一对一关联可以是单向或双向的。在这个场景中,我们讨论的是单向关联,即只有一个实体知道这个关联关系。 **注解方式实现一对一单向外键关联** 1. **定义实体类**:首先,我们需要创建两个实体类,...

    Hibernate一对一单向外键关联 (联合主键annotation)

    首先,一对一关联可以分为两种类型:单向和双向。在单向一对一关联中,只有一个实体知道另一个实体的存在,而另一个实体并不知情。这里我们讨论的是单向外键关联,即一方实体持有了另一方的外键。 在Hibernate中,...

    Hibernate_Annotation参考文档

    - **双向关联**:在两端实体中都声明关联关系。 - **集合映射**: - 集合类型可以通过`@ElementCollection`注解来映射。 - 复杂类型的集合可以通过嵌套实体类的方式来实现。 - **级联操作**: - 使用`@Cascade`...

    Hibernate annotation 详解

    - **@OneToOne**: 一对一关联,可以是单向或双向。 - **@OneToMany**: 一对多关联,通常需要配合`@JoinColumn`或`@JoinTable`指定关联信息。 - **@ManyToOne**: 多对一关联,通常需要配合`@JoinColumn`指定关联信息...

    hibernate annotation+slf4j

    - `@OneToOne`表示一对一的关系,可以用于一对一的关联映射。 - `@OneToMany`表示一对多的关系,一个实体可以有多个子实体。 - `@ManyToMany`表示多对多的关系,两个实体类之间可以有多条双向连接。 4. 集合映射...

    Hibernate 注解

    如果需要双向关联,Address类也需要有一个对User的引用,使用`mappedBy`属性指明关联的属性: ```java @OneToOne(mappedBy = "address") private User user; ``` 总的来说,Hibernate注解为开发者提供了更直观、更...

Global site tag (gtag.js) - Google Analytics