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,那么生成的两张表都会有对方的外键,造成外键冗余。
分享到:
相关推荐
在Java的持久化框架Hibernate中,`@OneToOne`注解用于表示一对一的关联关系,而唯一外键一对一双向关联则是这种关系的一种具体实现方式。这篇文章将深入探讨这一概念,帮助你理解如何在实际开发中应用。 首先,我们...
本文将详细讲解“Hibernate Annotation 中的共享主键一对一双向关联”。 首先,我们需要理解什么是共享主键(Shared Primary Key)。在一对一的关联关系中,如果两个实体共享同一个主键,那么这种关联被称为共享...
- 双向关联意味着两个实体都持有对方的引用,使得可以从任一侧导航到关联的实体。 - **注解配置**:在双向一对多关联中,一方使用`@ManyToOne`,另一方使用`@OneToMany`并设置`mappedBy`属性。对于多对一,一方用`...
一对一关联可能是双向的,在双向关联中,有且仅有一端作为主体(owner)端存在:主体端负责维护联接列(即更新),对于不需要维护这种关系的从表则通过mappedNy属性进行声明。mappedBy的值指向主体的关联属性。例子...
在这个场景下,每个实体都有一个引用指向另一个实体,形成双向关联。本篇文章将深入探讨如何使用注解和XML配置来实现这种关联。 一、注解方式实现一对一双向外键关联 1. 实体类注解配置 在两个实体类中,我们需要...
根据给定文件的信息,本文将详细介绍Hibernate ORM(Object Relational Mapping)中关于不同类型的关联映射方式,并结合Annotation和XML两种配置方式来进行说明。 ### 一、一对一单向外键关联 在一对一单向外键...
在Hibernate中,一对一关联可以是单向或双向的。在这个场景中,我们讨论的是单向关联,即只有一个实体知道这个关联关系。 **注解方式实现一对一单向外键关联** 1. **定义实体类**:首先,我们需要创建两个实体类,...
首先,一对一关联可以分为两种类型:单向和双向。在单向一对一关联中,只有一个实体知道另一个实体的存在,而另一个实体并不知情。这里我们讨论的是单向外键关联,即一方实体持有了另一方的外键。 在Hibernate中,...
- **双向关联**:在两端实体中都声明关联关系。 - **集合映射**: - 集合类型可以通过`@ElementCollection`注解来映射。 - 复杂类型的集合可以通过嵌套实体类的方式来实现。 - **级联操作**: - 使用`@Cascade`...
- **@OneToOne**: 一对一关联,可以是单向或双向。 - **@OneToMany**: 一对多关联,通常需要配合`@JoinColumn`或`@JoinTable`指定关联信息。 - **@ManyToOne**: 多对一关联,通常需要配合`@JoinColumn`指定关联信息...
- `@OneToOne`表示一对一的关系,可以用于一对一的关联映射。 - `@OneToMany`表示一对多的关系,一个实体可以有多个子实体。 - `@ManyToMany`表示多对多的关系,两个实体类之间可以有多条双向连接。 4. 集合映射...
如果需要双向关联,Address类也需要有一个对User的引用,使用`mappedBy`属性指明关联的属性: ```java @OneToOne(mappedBy = "address") private User user; ``` 总的来说,Hibernate注解为开发者提供了更直观、更...