博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一对一单向双向主键关联
阅读量:4357 次
发布时间:2019-06-07

本文共 8231 字,大约阅读时间需要 27 分钟。

一对一单向主键关联(不重要)

a) @PrimaryKey JoinColumn

  注解实现 Husband 和 Wife--以Husband为主为例

    Husband:

1 package com.bjsxt.hibernate; 2  3 import javax.persistence.Entity; 4 import javax.persistence.GeneratedValue; 5 import javax.persistence.Id; 6 import javax.persistence.OneToOne; 7 import javax.persistence.PrimaryKeyJoinColumn; 8  9 @Entity10 public class Husband {11     12     private Integer id;13     14     private String name;15 16     private Wife wife;17     18     @Id19     @GeneratedValue20     public Integer getId() {21         return id;22     }23 24     public String getName() {25         return name;26     }27 28     @OneToOne//一对一的关系29     @PrimaryKeyJoinColumn30     public Wife getWife() {31         return wife;32     }33 34     public void setId(Integer id) {35         this.id = id;36     }37 38     public void setName(String name) {39         this.name = name;40     }41 42     public void setWife(Wife wife) {43         this.wife = wife;44     }45 }

Wife

1 package com.bjsxt.hibernate; 2  3 import javax.persistence.Entity; 4 import javax.persistence.GeneratedValue; 5 import javax.persistence.Id; 6  7 @Entity 8 public class Wife { 9     private Integer id;10     11     private String name;12 13     @Id14     @GeneratedValue15     public Integer getId() {16         return id;17     }18 19     public void setId(Integer id) {20         this.id = id;21     }22 23     public String getName() {24         return name;25     }26 27     public void setName(String name) {28         this.name = name;29     }30 31 }
View Code

XML 实现

    以 Student 和 StudentIdCard(学生证) 为例,Student 为主导

    Student

1 package com.bjsxt.hibernate; 2  3 public class Student { 4      5     private Integer id; 6      7     private String name; 8      9     private Integer age;10     11     private String sex;12     13     private boolean good;14     15     private StudentIdCard studentIdCard;16 17     public Integer getId() {18         return id;19     }20 21     public void setId(Integer id) {22         this.id = id;23     }24 25     public String getName() {26         return name;27     }28 29     public void setName(String name) {30         this.name = name;31     }32 33     public Integer getAge() {34         return age;35     }36 37     public void setAge(Integer age) {38         this.age = age;39     }40 41     public String getSex() {42         return sex;43     }44 45     public void setSex(String sex) {46         this.sex = sex;47     }48 49     public boolean isGood() {50         return good;51     }52 53     public void setGood(boolean good) {54         this.good = good;55     }56 57     public StudentIdCard getStudentIdCard() {58         return studentIdCard;59     }60 61     public void setStudentIdCard(StudentIdCard studentIdCard) {62         this.studentIdCard = studentIdCard;63     }64     65 }

Student.hbm.xml 设置主键生成策略为 foreign,参数为 studentIdCard,constrained="true"

1 
2 5 6
7
8
9
10
studentIdCard11
12
13
14
15
16
17
18
19

StudentIdCard

1 package com.bjsxt.hibernate; 2  3 public class StudentIdCard { 4  5     private Integer id; 6      7     private String num; 8  9     public Integer getId() {10         return id;11     }12 13     public void setId(Integer id) {14         this.id = id;15     }16 17     public String getNum() {18         return num;19     }20 21     public void setNum(String num) {22         this.num = num;23     }24     25 }

StudentIdCard.hbm.xml

1 
2 5 6
7
8
9
10
11
12
13
View Code

所需jar包链接: 密码: p1qh

代码链接: 密码: mhrf

4. 一对一双向主键关联(不重要)

   Annotation 配置

    Husband:

1 package com.bjsxt.hibernate; 2  3 import javax.persistence.Entity; 4 import javax.persistence.GeneratedValue; 5 import javax.persistence.Id; 6 import javax.persistence.OneToOne; 7 import javax.persistence.PrimaryKeyJoinColumn; 8  9 @Entity10 public class Husband {11     12     private Integer id;13     14     private String name;15 16     private Wife wife;17     18     @Id19     @GeneratedValue20     public Integer getId() {21         return id;22     }23 24     public String getName() {25         return name;26     }27 28     @OneToOne//一对一的关系29     @PrimaryKeyJoinColumn30     public Wife getWife() {31         return wife;32     }33 34     public void setId(Integer id) {35         this.id = id;36     }37 38     public void setName(String name) {39         this.name = name;40     }41 42     public void setWife(Wife wife) {43         this.wife = wife;44     }45 }
View Code

    Wife:

1 package com.bjsxt.hibernate; 2  3 import javax.persistence.Entity; 4 import javax.persistence.GeneratedValue; 5 import javax.persistence.Id; 6 import javax.persistence.OneToOne; 7 import javax.persistence.PrimaryKeyJoinColumn; 8  9 @Entity10 public class Wife {11     12     private Integer id;13     14     private String name;15     16     private Husband husband;17     18     @Id19     @GeneratedValue20     public Integer getId() {21         return id;22     }23 24     public void setId(Integer id) {25         this.id = id;26     }27 28     public String getName() {29         return name;30     }31 32     public void setName(String name) {33         this.name = name;34     }35 36     @OneToOne37     @PrimaryKeyJoinColumn38     public Husband getHusband() {39         return husband;40     }41 42     public void setHusband(Husband husband) {43         this.husband = husband;44     }45 46 }
View Code

如上图所示,并没有生成对应的外键。Annotation 在这个版本有bug,别用。

XML 配置:

  Student

1 package com.bjsxt.hibernate; 2  3 public class Student { 4      5     private Integer id; 6      7     private String name; 8      9     private Integer age;10     11     private String sex;12     13     private boolean good;14     15     private StudentIdCard studentIdCard;16 17     public Integer getId() {18         return id;19     }20 21     public void setId(Integer id) {22         this.id = id;23     }24 25     public String getName() {26         return name;27     }28 29     public void setName(String name) {30         this.name = name;31     }32 33     public Integer getAge() {34         return age;35     }36 37     public void setAge(Integer age) {38         this.age = age;39     }40 41     public String getSex() {42         return sex;43     }44 45     public void setSex(String sex) {46         this.sex = sex;47     }48 49     public boolean isGood() {50         return good;51     }52 53     public void setGood(boolean good) {54         this.good = good;55     }56 57     public StudentIdCard getStudentIdCard() {58         return studentIdCard;59     }60 61     public void setStudentIdCard(StudentIdCard studentIdCard) {62         this.studentIdCard = studentIdCard;63     }64     65 }
View Code

Student.hbm.xml

1 
2 5 6
7
8
9
10
studentIdCard11
12
13
14
15
16
17
18
19

StudentIdCard

1 package com.bjsxt.hibernate; 2  3 public class StudentIdCard { 4  5     private Integer id; 6      7     private String num; 8      9     private Student student;10     11     public Integer getId() {12         return id;13     }14 15     public void setId(Integer id) {16         this.id = id;17     }18 19     public String getNum() {20         return num;21     }22 23     public void setNum(String num) {24         this.num = num;25     }26 27     public Student getStudent() {28         return student;29     }30 31     public void setStudent(Student student) {32         this.student = student;33     }34 35 }
View Code

StudentIdCard.hbm.xml

1 
2 5 6
7
8
9
10
11
12
13
14

所需jar包链接:  密码: p1qh

代码链接: 密码: i8d5

转载于:https://www.cnblogs.com/ShawnYang/p/6732553.html

你可能感兴趣的文章
图的遍历(bfs+dfs)模板
查看>>
angular service 进行组件通信
查看>>
linux安装Mac的默认Monaco字体
查看>>
java语言的特点
查看>>
关于动态添加iview admin路由以及刷新侧边栏
查看>>
ApplicationInsights的探测器尝鲜
查看>>
java 解析Json格式数据
查看>>
unix中的线程池技术详解
查看>>
CSS简介
查看>>
常用三大软件评价1
查看>>
MVC各层介绍使用---初步理解
查看>>
单例对象的创建与销毁
查看>>
知识点关键词(记录一下)
查看>>
国际结算业务
查看>>
嵌套循环概念
查看>>
C# 生成订单号的几种方式
查看>>
IOS开发札记
查看>>
1.2.2 OSI参考模型 上
查看>>
centos服务器设置代理上网的方法
查看>>
Linux企业运维高效技巧心得及分享
查看>>