我是靠谱客的博主 跳跃中心,这篇文章主要介绍一对一映射,现在分享给大家,希望可以做个参考。

一、一对一映射

1.需求

用户与身份证信息,一条用户记录对应一条身份证信息!一对一关系!

2.基于外键的映射实现

1.身份证IdCard信息

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/** * 身份证 * Created by qianxingzhe on 16/5/28. */ public class IdCard { /** * 身份证号(主键),对象唯一标识 */ private String cardNum; /** * 身份证地址 */ private String place; /** * 身份证与用户,一对一的关系 */ private User user; public String getCardNum() { return cardNum; } public void setCardNum(String cardNum) { this.cardNum = cardNum; } public String getPlace() { return place; } public void setPlace(String place) { this.place = place; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } @Override public String toString() { return "IdCard{" + "cardNum='" + cardNum + ''' + ", place='" + place + ''' + ", user=" + user + '}'; } }

2.用户信息

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/** * 用户 * Created by qianxingzhe on 16/5/28. */ public class User { private int userId; private String userName; /** * 用户与身份证信息,一对一关系 */ private IdCard idCard; public int getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public IdCard getIdCard() { return idCard; } public void setIdCard(IdCard idCard) { this.idCard = idCard; } @Override public String toString() { return "User{" + "userId=" + userId + ", userName='" + userName + ''' + ", idCard=" + idCard + '}'; } }

3.IdCard.hbm.xml

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?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="com.yly.one2one" auto-import="true"> <class name="IdCard" table="t_IdCard"> <id name="cardNum"> <generator class="assigned"/> </id> <property name="place" length="20"/> <!-- 一对一映射,有外键方 unique="true" 给外键字段添加唯一约束 --> <many-to-one name="user" class="User" column="user_id" cascade="save-update" unique="true"></many-to-one> </class> </hibernate-mapping>

4.User.hbm.xml

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?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="com.yly.one2one"> <class name="User" table="t_user_one2one"> <id name="userId"> <generator class="native"/> </id> <property name="userName" length="20"/> <!-- 一对一映射,没有外键方 --> <one-to-one name="idCard" class="IdCard"></one-to-one> </class> </hibernate-mapping>
3.基于主键的映射

1.身份证信息

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
/** * 身份证 * Created by qianxingzhe on 16/5/28. */ public class IdCard { private int user_id; /** * 身份证号 */ private String cardNum; /** * 身份证地址 */ private String place; /** * 身份证与用户,一对一的关系 */ private User user; public String getCardNum() { return cardNum; } public void setCardNum(String cardNum) { this.cardNum = cardNum; } public String getPlace() { return place; } public void setPlace(String place) { this.place = place; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public int getUser_id() { return user_id; } public void setUser_id(int user_id) { this.user_id = user_id; } @Override public String toString() { return "IdCard{" + "user_id=" + user_id + ", cardNum='" + cardNum + ''' + ", place='" + place + ''' + ", user=" + user + '}'; } }

2.IdCard.hbm.xml

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?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="com.yly.one2one" auto-import="true"> <class name="IdCard" table="t_IdCard"> <id name="user_id"> <generator class="foreign"> <param name="property">user</param> </generator> </id> <property name="cardNum" length="20"/> <property name="place" length="20"/> <!-- 一对一映射,有外键方 (基于主键的映射) constrained="true" 指定在主键上添加外键约束 --> <one-to-one name="user" class="User" constrained="true" cascade="save-update"></one-to-one> </class> </hibernate-mapping>

转载于:https://www.cnblogs.com/FlySheep/p/5536936.html

最后

以上就是跳跃中心最近收集整理的关于一对一映射的全部内容,更多相关一对一映射内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部