Hibrenate一对一外键关联

本文详细介绍了在Hibernate中实现一对一双向和单向关联的方法,包括如何通过注解设置外键关联及使用PowerDesign进行反向工程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、一对一(单向):使用外部索引将其中的一个类作为parent,相对应的一个就是子类,并且参照父 类的主键ID来生成数据库表。(比如:可以将husband中设置一个wife_id对应wife中的主键id) 1.Wife 类:生成get、set方法 @Entity//注意使用注解 public class Wife { private int id; private String name; @Id//注意使用注解 @GeneratedValue//注意使用注解 public int getId() { return id; } } 2.Husband类,生成get、set方法 @Entity public class Husband { private int id; private String name; private Wife wife; @Id @GeneratedValue public int getId() { return id; } public String getName() { return name; } @OneToOne @JoinColumn(name="wife_id")//映射:设置id的name,如果不设置,则系统默认设置一个名字 public Wife getWife() { return wife; } }

注:可以使用Power Design(反向工程)将数据库表表反向出来看效果。

二、一对一(双向):方法同上,只是在两个类中都要设置对应的另外一个类(private Husband  husband; 生成get set方法)的但是会导致其中一个外加的关联索引是冗余的,可以通过@OneToOne (mappedBy="wife")解决。相当于告诉系统,要以wife为主导,否则将找不到Husband。 1.Wife类:生成get、set方法 @Entity public class Wife { private int id; private String name; private Husband husband;//设置Husband类的一个对象,并生成get.set方法 } 注:凡是双向关联就必须设置mappedBy,但是没必要,因为设置一次就行。 2.Husband类:生成get、set方法 @Entity public class Husband { private int id; private String name; private Wife wife; @Id @GeneratedValue public int getId() { return id; } public String getName() { return name; } @OneToOne(mappedBy="wife")//要以wife为指导才能找到Husband public Wife getWife() { return wife; }

 hibernate.xml文件的设置:注意把新建的两个类注册到mapping中

<mapping class="com.cqvie.model.Husband"/> <mapping class="com.cqvie.model.Wife"/>

转载于:https://www.cnblogs.com/Believer/p/5622206.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值