`

4.Hibernate的一对一主键关联映射

阅读更多

 默认cascade属性为true;

 

核心代码:

1.主键生成策略:

<!-- Person的主键来源于idCard, 也就是共享idCard主键 -->
<generator class="foreign">
	<param name="property">idCard</param>
</generator>

2.one-to-one配置

<!-- one-to-one标签的含义,指示hibernate怎样加载它的关联对象,默认根据主键加载
	constrained="true",表明当前主键上存在一个约束,person的主键作为外键参照了idcard
 -->
<one-to-one name="idCard" constrained="true" />
 

 

一:实体类:

package com.tao.hibernate.one2one;

public class Person {
	private Integer id;
	private String name;
	private IdCard idCard;

	public Person() {
		super();
	}

	public Integer getId() {
		return id;
	}

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

	public String getName() {
		return name;
	}

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

	public IdCard getIdCard() {
		return idCard;
	}

	public void setIdCard(IdCard idCard) {
		this.idCard = idCard;
	}

}
 
package com.tao.hibernate.one2one;

public class IdCard {
	private Integer id;
	private String cardNo;
	private Person person;

	public IdCard() {
		super();
	}

	public Integer getId() {
		return id;
	}

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

	public String getCardNo() {
		return cardNo;
	}

	public void setCardNo(String cardNo) {
		this.cardNo = cardNo;
	}

	public Person getPerson() {
		return person;
	}

	public void setPerson(Person person) {
		this.person = person;
	}

}

  二:映射文件:

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

<hibernate-mapping package="com.tao.hibernate.one2one">
	<class name="Person" table="t_Person">
		<id name="id" column="id" type="integer">
			<!-- Person的主键来源于idCard, 也就是共享idCard主键 -->
			<generator class="foreign">
				<param name="property">idCard</param>
			</generator>
		</id>
		<property name="name" column="name" />
		<!-- one-to-one标签的含义,指示hibernate怎样加载它的关联对象,默认根据主键加载
			constrained="true",表明当前主键上存在一个约束,person的主键作为外键参照了idcard
		 -->
		<one-to-one name="idCard" constrained="true" />
	</class>
</hibernate-mapping>
 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="com.tao.hibernate.one2one">
	<class name="IdCard" table="t_IdCard">
		<id name="id" column="id" type="integer">
			<generator class="native" />
		</id>
		<property name="cardNo" column="cardNo" />
		<one-to-one name="person" fetch="select"/>
	</class>
</hibernate-mapping>

 三:测试类

package com.tao.hibernate.one2one;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;

import com.tao.hibernate.HibernateUtils;

public class TestMain {

	@Test
	public void testSave() {
		Session session = HibernateUtils.getFactory().openSession();

		IdCard idCard = new IdCard();
		idCard.setCardNo("100");

		Person person = new Person();
		person.setName("Tao");
		person.setIdCard(idCard);

		Transaction ts = session.beginTransaction();
		ts.begin();
		session.save(person);
		ts.commit();
	}

	@Test
	public void testLoad() {
		Session session = HibernateUtils.getFactory().openSession();
		Person person = (Person) session.load(Person.class, 2);
		System.out.println(person.getName());
		System.out.println(person.getIdCard().getCardNo());
	}

	@Test
	public void testLoad2() {
		Session session = HibernateUtils.getFactory().openSession();
		IdCard idCard = (IdCard) session.load(IdCard.class, 2);
		System.out.println(idCard.getCardNo());
		System.out.println(idCard.getPerson().getName());
	}

}
 

 

分享到:
评论

相关推荐

    第03章电子商务安全.pptx

    第03章电子商务安全.pptx

    可视化势流理论的基本解,包括均匀流、源_汇、偶极子和涡流Matlab代码 matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    电子商务物流第二版教案第5章.ppt

    电子商务物流第二版教案第5章.ppt

    电子商务理论知识纲要与重点.ppt

    电子商务理论知识纲要与重点.ppt

    字符串转数字(c++)

    字符串转数字(c++)

    抖音小红书快手B站截流获客引流工具仓库安装更新包

    抖音小红书快手B站截流获客引流工具仓库安装更新包

    社保数据采集软件用户手册.doc

    社保数据采集软件用户手册.doc

    Matlab源代码:基于MPC的储能系统优化运行策略 SCI论文源代码

    文献链接:https://www.sciencedirect.com/science/article/pii/S2352484725001349 Tips: 代码运行平台为 matlab+GAMS, 使用Cplex求解

    MIG熔滴过渡与熔池耦合的二维数值模拟及脉冲电流电压控制技术教程

    内容概要:本文详细介绍了MIG熔滴过渡与熔池耦合的二维数值模拟方法及其在焊接技术中的应用。主要内容涵盖基础知识介绍、脉冲电流电压的加入与一脉一滴的实现机制、UDF建模与设置教程、Fluent焊接相关内容的应用。通过精确控制脉冲电流电压,实现了每脉冲对应一个熔滴的效果,提高了焊接质量和效率。此外,还提供了详细的建模与设置教程,帮助读者掌握从理论到实践的完整流程。 适合人群:从事焊接技术研究的专业人士、工程技术人员、高校相关专业师生。 使用场景及目标:适用于希望深入了解MIG熔滴过渡与熔池耦合机理的研究人员和技术人员,旨在提升焊接质量与效率,优化焊接工艺。 其他说明:文章不仅提供理论知识,还包括具体的代码分析与实战演练,使读者能够将所学知识应用于实际焊接操作中。

    贝叶斯优化超参数和通过交叉验证比较多个回归器,包括ANN、SVM、集成方法、GPR、RT、核方法等Matllab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    第四章电子商务物流技术.ppt

    第四章电子商务物流技术.ppt

    工业自动化中西门子1200多轴伺服步进FB块程序详解及其应用 - 伺服控制

    内容概要:本文详细介绍了西门子1200多轴伺服步进FB块程序的特点和应用。该程序由两个FB组成,分别采用SCL和梯形图编写,支持PTO脉冲和PN网口模式,适用于多种伺服和步进电机。文中提供了详细的中文注释和关键代码片段,展示了程序的兼容性和灵活性,并分享了多个成功的实际应用案例。此外,还讨论了如何根据具体硬件环境和控制需求对程序进行适当调整,以满足复杂控制需求。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是那些需要理解和应用伺服步进电机控制系统的专业人士。 使用场景及目标:① 学习并掌握西门子1200多轴伺服步进FB块程序的设计和实现;② 在实际项目中应用该程序,实现对不同品牌伺服和步进电机的精确控制;③ 提升对工业自动化系统中电机控制的理解和操作能力。 其他说明:本文提供的FB块程序已在多个实际项目中得到验证,确保其稳定性和可靠性。同时,详细的中文注释有助于快速理解程序逻辑,降低调试难度。

    PhotoShopCS5V12.0.1

    免费版的图片处理工具软件PS,可以对图片进行抠图,精修,P图等。

    NLFM信号汉明窗余弦调制代码

    本MATLAB程序用于仿真两种非线性调频(NLFM)信号的生成过程。在生成信号时,分别采用了Hamming窗和四倍余弦窗进行加权处理。随后,对生成的NLFM信号进行了匹配滤波操作。此外,还对信号进行了32倍插值处理以观察其波形特性。通过仿真结果可以发现,NLFM信号无需进行加权处理,直接进行匹配滤波即可获得较低的旁瓣电平。

    用于在软件中模拟真实变压器的老化过程行为Matlab代码 matlab代码.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

Global site tag (gtag.js) - Google Analytics