`
wandejun1012
  • 浏览: 2690054 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

hibernate 一对一双向关联_主键

 
阅读更多

一对一映射分2种映射策略,一个是根据主键一样,另一个是根据外键一样。

 

注意到:one2one标签,只影响加载,不影响存储。

 

首先,讲主键。

 

1.单向一对一。

以Person类和IdCard类为例, 假设需求是根据Person找到IdCard,那么各个类如下:

 

package com.bjpowernode.hibernate.domain;
public class Person {
	private int id;
	private String name;
	private IdCard idCard;
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public IdCard getIdCard() {
		return idCard;
	}
	public void setIdCard(IdCard idCard) {
		this.idCard = idCard;
	}
}

 

Person配置文件:

 

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

	<class name="com.bjpowernode.hibernate.domain.Person" table="t_person">
		<id name="id">
			<generator class="foreign">
				<param name="property">idCard</param>
			</generator>
		</id>
		
		<property name="name"/>
		<one-to-one name="idCard" constrained="true" />
	
	</class>
	
</hibernate-mapping>

 

IdCard类:

 

package com.bjpowernode.hibernate.domain;

import java.util.Set;


public class IdCard {
	private int id;
	private String name;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	/*public Set getStudents() {
		return students;
	}
	public void setStudents(Set students) {
		this.students = students;
	}*/
	
	
}

 

IdCard配置文件:

 

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

	<class name="com.bjpowernode.hibernate.domain.IdCard" table="t_idcard">
		<id name="id">
			<generator class="native"/>
		</id>
		
		<property name="name"/>
		
	
	</class>
	
</hibernate-mapping>

 

 

-------------------------------------------------------------------------------------------------------------

 

2.双向一对一,主键策略

 

只要将IdCard中增加一个属性Person

 

package com.bjpowernode.hibernate.domain;



public class IdCard {
	private int id;
	private String name;
	private Person person;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public Person getPerson() {
		return person;
	}
	public void setPerson(Person person) {
		this.person = person;
	}
	
	
}

 

IdCard配置文件:

 

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

	<class name="com.bjpowernode.hibernate.domain.IdCard" table="t_idcard">
		<id name="id">
			<generator class="native"/>
		</id>
		
		<property name="name"/>
		
		<one-to-one name="person"/>
	
	</class>
	
</hibernate-mapping>

 

至此,一对一双向主键策略完成。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Hibernate关联映射

    Hibernate 一对一外键单向关联 Hibernate 一对一主键单向...Hibernate 一对一主键双向关联 Hibernate 一对一连接表双向关联 Hibernate 一对多外键双向关联 Hibernate 一对多连接表双向关联 Hibernate 多对多双向关联

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

    博文链接:https://shaqiang32.iteye.com/blog/201309

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

    Hibernate学习要点:一对一主键关联双向

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

    http://blog.csdn.net/e421083458/article/details/8794127 该源码为Hibernate教程配套源码

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

    NULL 博文链接:https://paladin1988.iteye.com/blog/1639102

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

    博文链接:https://llying.iteye.com/blog/220803

    Hibernate关联关系映射目录

    Hibernate关联关系映射 单向关联 │ ├─ 一对一外键单向关联 │ ├─ 一对一主键单向...├─ 一对一主键双向关联 ├─ 一对一连接表双向关联 ├─ 一对多外键双向关联 ├─ 一对多连接表双向关联 └─ 多对多双向关联

    Hibernate学习笔记

    010 一对一 主键关联映射_双向 011 一对一 唯一外键关联映射_单向 012 一对一 唯一外键关联映射_双向 013 session_flush 014 一对多关联映射 单向 015 一对多关联映射 双向 016 多对多关联映射 单向 017 多对多关联...

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

    NULL 博文链接:https://lijunabc.iteye.com/blog/438426

    hibernate学习笔记

    hibernate一对一主键关联映射(双向关联Person&lt;----&gt;IdCard) 9 hibernate一对一唯一外键关联映射(单向关联Person----&gt;IdCard) 10 hibernate一对一唯一外键关联映射(双向关联Person&lt;----&gt;IdCard) 11 session ...

    Hibernate one2one_pk_1

    Hibernate学习要点:一对一主键关联双向

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

    NULL 博文链接:https://cdxs2.iteye.com/blog/1932867

    Hibernate_Annotation关联映射

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

    Hibernate学习笔记_songjignhao_1

    自己记录的学习笔记,内容很详细,有代码,包括:一对多双向关联关系、一对多双向自身关联关系、一对一关联关系(主键关联、外键关联)、一对多与一对一结合、多对多关联关系、Map、Set、List与Bag映射关系、查询...

    Hibernate_实体关联关系映射--学习总结

    Hibernate 实体关联关系映射 学习总结 把一对一 一对多 单向 双向 主键 外键 链接表等讲的比较清楚

    Hibernate注释大全收藏

    Hibernate注释大全收藏 声明实体Bean @Entity public class Flight implements Serializable { Long id; @Id public Long getId() { return id; } public void setId(Long id) { this.id...一对一 使用 @OneToOne...

    Hibernate 中文 html 帮助文档

    7.4.2. 一对一(one to one) 7.5. 使用连接表的双向关联(Bidirectional associations with join tables) 7.5.1. 一对多(one to many) /多对一( many to one) 7.5.2. 一对一(one to one) 7.5.3. 多对多...

    Hibernate教程

    8.2.2. 一对一(one to one) 8.2.3. 一对多(one to many) 8.3. 使用连接表的单向关联(Unidirectional associations with join tables) 8.3.1. 一对多(one to many) 8.3.2. 多对一(many to one) 8.3.3. 一...

    hibernate 体系结构与配置 参考文档(html)

    一对一(one to one) 7.5. 使用连接表的双向关联(Bidirectional associations with join tables) 7.5.1. 一对多(one to many) /多对一( many to one) 7.5.2. 一对一(one to one) 7.5.3. 多对多(many ...

Global site tag (gtag.js) - Google Analytics