博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
4.一对多关联映射
阅读量:5910 次
发布时间:2019-06-19

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

1.实体一对多关联

一对多联系(1:n)

定义:
如果对于实体集A中的每一个实体,实体集B中有n个实体(n≥0)与之联系,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之联系,则称实体集A与实体集B有一对多联系,记为1:n。
实例:
一个班级中有若干名学生,每个学生只在一个班级中学习。

2.数据库一对多关联

在关系模型中,只存在外键参照关系,而且是 many 方参照 one 方。

3.Hibernate单向一对多关联

在关系模型中,只存在外键参照关系,而且是 many 方参照 one 方。public class User {    private Integer id;    private String userName;    private String password;    private Set orderSet = new HashSet
(); ......}public class Order { private Integer id; private Double price; // 价格 ......}
映射配置文件在 User.hbm.xml 文件中使用 
元素配置。
元素属性:name属性:指定要映射的属性名;cascade级联操作属性:save-update、delete、all、none。
元素的子元素:
元素:column 属性设定所关联类对应表的外键;
元素:class 属性设定所关联的类。
在表示一对多关联关系时,还可以使用 List 和 Map 来表示引用集合。public class User {    private Integer id;    private String userName;    private String password;    private List orderList = new ArrayList
(); ……}

使用 List 映射时,需要在 Order 表中添加一个额外字段 (ORDERINDEX) 来表示插入顺序。

在User.hbm.xml文件中使用 <list>元素配置。

<list name="orderList" cascade="delete">

<key column="USERID"/>
<index column="ORDERINDEX"/>
<one-to-many class="Order" />
</list>

 

<index>子元素:

column 属性:指定 ORDER 表中记录插入顺序的列名。

使用 Map 映射时,需要在 Order 表中添加一个额外字段 (ORDERKEY) 来记录 Map 的 key 值。
    

<index>子元素:

column 属性:指定记录 Map 中 key 值得字段名。
type 属性:指定 Map 中 key 值的类型(不可缺省)。

 

 

4.Hibernate 双向一对多关联

建立 User 和 Order 的双向一对多关联。在 User 到 Order 单向一对多关联关系基础上,在 Order 类中增加 User 类型的属性。public class Order {    private Integer id;     private Double price; // 价格    private User user;    ......}
Order.hbm.xml 中添加 user 属性的映射。
元素的属性:name 属性:指定需映射的属性名;column 属性:指定ORDER中的外键列名;class 属性:指定所关联的类型。

使用注解映射一对多关联:

在 many 方 Order类 的 getUser() 方法上配置。@ManyToOne@JoinColumn(name="USERID")public User getUser() {    return user;}@JoinColumn(name = "USERID") : 指定 ORDER 表中的外键列名。
在 one 方 User类 的 getOrderSet() 方法上配置。@OneToMany(mappedBy="user", targetEntity=Order.class,         cascade=CascadeType.ALL)public Set getOrderSet() {    return orderSet;}mappedBy:表明是双向关联关系,并且与 user 建立对应。targetEntity:指定了所关联的类型。cascade:指定级联操作。

 

转载于:https://www.cnblogs.com/Firesun/p/9844580.html

你可能感兴趣的文章
美国谍梦第三至五季/全集The Americans迅雷下载
查看>>
项目中使用RDLC报表
查看>>
1.7. Apache Bloodhound
查看>>
动态载入数据的无刷新TreeView控件(8)
查看>>
等待超时,请打开设备管理器查看苹果驱动是否正常!
查看>>
[Erlang 0129] Erlang 杂记 VI 2014年10月28日
查看>>
单调、加班、血汗工厂,被夸大的富士康背后真相到底是什么?
查看>>
23.2. 基础操作
查看>>
JSDT 应用研究
查看>>
如何添加自定义脚本到开机自启动
查看>>
24.5. IN / NOT IN
查看>>
【批处理学习笔记】第七课:简单的批处理命令(6)
查看>>
Android.Hack.02_Animations
查看>>
[LeetCode] Repeated Substring Pattern 重复子字符串模式
查看>>
Quartz.NET总结(四)Quartz 远程调度
查看>>
2.22. Spring boot with Cache
查看>>
RxVolley使用文档 —— RxVolley = Volley + RxJava + OkHttp
查看>>
[Everyday Mathematics]20150130
查看>>
180.2. UpdateInstaller (AppServer, Plugins, IBMIHS)
查看>>
在自己的网站添加关注新浪关注按钮
查看>>