`

单向一对一关联

 
阅读更多

Annotation方法

 

Tables structure

'CREATE TABLE `address` (
  `addressID` int(11) NOT NULL,
  `addressName` varchar(45) NOT NULL,
  PRIMARY KEY (`addressID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8'

 

'CREATE TABLE `person` (
  `id` int(11) NOT NULL,
  `name` varchar(45) NOT NULL,
  `addressID` varchar(45) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8'

 

Person类

 

package hibernate.entities;

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

@Entity
public class Person {
	private int id;
	private String name;
	private Address address;
	
	@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
	@JoinColumn(name="addressID")
	public Address getAddress() {
		return address;
	}
	public void setAddress(Address address) {
		this.address = address;
	}

 

 

Address类

 

package hibernate.entities;

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

@Entity
public class Address {
	private int addressID;
	private String addressName;
	
	@Id
	@GeneratedValue
	public int getAddressID() {
		return addressID;
	}
	public void setAddressID(int addressID) {
		this.addressID = addressID;
	}
	public String getAddressName() {
		return addressName;
	}
	public void setAddressName(String addressName) {
		this.addressName = addressName;
	}
	
	
}

 

 

 

XML配置方法

 husband表

'CREATE TABLE `husband` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(45) NOT NULL,
  `wifeID` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id_UNIQUE` (`id`),
  KEY `FK_7hkddxc8rvd25jlebv327ewj8` (`wifeID`),
  CONSTRAINT `FK_7hkddxc8rvd25jlebv327ewj8` FOREIGN KEY (`wifeID`) REFERENCES `wife` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8'

 

wife表

'CREATE TABLE `wife` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8'

 

 

Husband类

package hibernate.entities;

public class Husband {
	private int id;
	private String name;
	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类

package hibernate.entities;

public class Wife {
	private int id;
	private String name;
	
	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;
	}
	
	
}

 

 

Husband.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="hibernate.entities">
    <class name="Husband" table="husband">
       <id name="id" column="id">
       	<generator class="native"></generator>
       </id>
       
       <property name="name"></property>
       
       <many-to-one name="wife" column="wifeID" unique="true"></many-to-one>
    </class>
</hibernate-mapping>

 

Wife.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="hibernate.entities">
    <class name="Wife" table="wife">
       <id name="id" column="id">
       	<generator class="native"></generator>
       </id>
       
       <property name="name" column="name"/>
       
    </class>
</hibernate-mapping>

 

分享到:
评论

相关推荐

    hibernate主键实现一对一单向关联关系源码

    -- 单向一对一关联Address --&gt; &lt;!-- Address.hbm.xml --&gt; &lt;param name="property"&gt;person&lt;/param&gt; &lt;!-- 引用Person的主键 --&gt; ``` 3. **源码分析** 在`Person`类中,`Address`对象的...

    hibernate一对一之唯一外键关联(单向关联)

    对于单向一对一关联,通常是在一个实体类中定义另一个实体类的引用,而另一个实体类并不知道这个引用。下面是一个简单的例子: ```java // 用户实体类(User) @Entity public class User { @Id @GeneratedValue...

    Hibernate教程04_关系映射之一对一单向外键关联

    在数据库中,外键用于在两个表之间建立关联,而在单向一对一关联中,通常只在一个实体类中声明对另一个实体的引用,而另一个实体类并不知晓这个关联。 **详细知识点:** 1. **实体类与表的映射**:在Hibernate中,...

    Hibernate单向关联代码示例

    单向关联分为单向一对一关联和单向一对多关联。这里我们先讨论单向一对多关联,它是最常见的关联类型之一,一个实体可以拥有多个其他实体实例。例如,一个部门可以有多个员工,但员工并不知道属于哪个部门,这就是...

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

    // 单向一对一关联 @OneToOne(mappedBy = "person") private IdentityCard identityCard; // getters and setters } @Entity public class IdentityCard { @Id @GeneratedValue(strategy = GenerationType....

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

    在单向一对一关联中,只有一个实体知道另一个实体的存在,而另一个实体并不知情。这里我们讨论的是单向外键关联,即一方实体持有了另一方的外键。 在Hibernate中,一对一关联可以通过`@OneToOne`注解来实现。这个...

    Hibernate 一对一外键单向关联

    本篇文章将深入探讨Hibernate中的一对一外键单向关联。 首先,一对一外键关联指的是一个实体通过外键直接引用另一个实体的主键。在单向关联中,只有其中一个实体知道另一个实体的存在,而另一个实体则无感知。这种...

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

    如果只需要在一方(通常是拥有外键的一方)表示关联,可以使用单向一对一关联。比如只在`Passport`类中定义`Person`对象,而`Person`类不包含`Passport`对象。 在实际应用中,应根据业务需求选择合适的关联方式。...

    hibernate多对一单向关联关系实现源码

    对于单向多对一关联,通常是在多方(拥有多个实体)的类中添加一个对单方(拥有单一实体)的引用。 例如,我们可以创建两个实体类:`Employee`(员工)和`Department`(部门)。在`Employee`类中,我们将有一个`...

    unidirectional-one2one-sharedprimarykey:该存储库正在存储有关Hibernate映射示例的源代码-共享主键上的单向一对一关联-one source code

    单向一对一关联是指在一个实体类中有一个引用指向另一个实体类,但在被引用的实体类中并没有反向的引用。这种关联在现实世界的应用中并不常见,但在某些特定场景下,如用户个人信息与用户账号信息的关联,可能会用到...

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

    如果不希望在一方有引用,可以去掉`mappedBy`属性,变成单向一对一关联。 6. **外键策略**: Hibernate默认会在被引用的一方(在这里是Profile)创建外键,但如果需要在引用方(User)创建外键,可以通过`inverse`...

    Hibernate双向一对一关联映射(XML版)

    单向一对一关联通常只在一个实体类中定义,而双向一对一关联则在两个实体类中都有相应的引用。 在XML配置文件中,我们通常会在`hibernate.cfg.xml`中定义数据源和SessionFactory,而在实体类对应的`.hbm.xml`文件中...

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

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

    有关ssh一对一单向关联以及登陆的分页小例子

    为了实现一对一关联,我们需要在 authorized_keys 文件中只包含对应服务器的公钥,这样就限制了该用户只能连接到拥有该公钥的服务器。 接下来,我们谈谈SSH登陆过程中的分页功能。在处理大量数据输出时,分页器如`...

    hibernate外键实现一对一单向关联关系源码

    **一对一关联关系**在数据库设计中表示两个表之间存在唯一的对应关系,例如,一个人可能只有一个护照,或者一个员工只有一个职位。在Hibernate中,这种关系可以通过外键(Foreign Key)在一方或双方实体中实现。 **...

    Hibernate 一对一连接表单向关联

    1. **单向一对一关联的注解方式** 在Java类中,我们可以使用`@OneToOne`注解来表示一对一的关联。这个注解有两个重要的属性:`targetEntity`和`mappedBy`。如果关联是从A到B的单向关联,那么在A类上使用`@OneToOne...

    一对多单向关联关系实现元源码

    在Java编程语言中,特别是在开发基于JPA(Java Persistence API)和ORM(对象关系映射)框架如Hibernate的应用时,一对多单向关联关系是一种常见的数据模型设计。这种关系表示一个实体可以与多个其他实体相关联,而...

    Hibernate学习:单向多对一关联 工程

    本项目“Hibernate学习:单向多对一关联 工程”专注于讲解Hibernate中的单向多对一关联映射,这是数据库设计中常见的关系类型,尤其在处理具有层次结构的数据时。 单向多对一关联指的是在一个实体类中有一个引用,...

    Hibernate 一对一

    在单向一对一关联中,只有一个实体知道另一个实体的存在。例如,User类可能有一个PersonalInfo属性,但PersonalInfo类没有User属性。配置方法与双向关联类似,只是在PersonalInfo类中不需要任何关于User的引用或注解...

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

    在一对一关联中,外键通常放在关系的“从”方,即依赖于另一方的实体。唯一外键关联映射时,外键字段在数据库中设置为主键约束,确保每个值都是唯一的,这样就能保证一对一的关系。 ### 2. 创建实体类 假设我们有...

Global site tag (gtag.js) - Google Analytics