Hibernate 双向一对多映射
附代码:
public class Order {
private Integer id;
private String OrderName;
private Customer customer;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getOrderName() {
return OrderName;
}
public void setOrderName(String orderName) {
OrderName = orderName;
}
public Customer getCustomer() {
return customer;
}
public void setCustomer(Customer customer) {
this.customer = customer;
}
}
Order
public class Customer {
private Integer id;
private String customerName;
private Set<Order> orders = new HashSet<>();
public Set<Order> getOrders() {
return orders;
}
public void setOrders(Set<Order> orders) {
this.orders = orders;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getCustomerName() {
return customerName;
}
public void setCustomerName(String customerName) {
this.customerName = customerName;
}
}
Customer
<hibernate-mapping package="com.hibernate.entities.n21.both">
<class name="Customer" table="CUSTOMERS">
<id name="id" type="java.lang.Integer">
<column name="ID" />
<generator class="native" />
</id>
<property name="customerName" type="java.lang.String">
<column name="CUSTOMER_NAME" />
</property>
<set name="orders" table="ORDERS" inverse="true">
<key>
<column name="CUSTOMER_ID"></column>
</key>
<one-to-many class="Order"/>
</set>
</class>
</hibernate-mapping>
Customer.hbm.xml
<hibernate-mapping package="com.hibernate.entities.n21.both">
<class name="Order" table="ORDERS">
<id name="id" type="java.lang.Integer">
<column name="ID" />
<generator class="native" />
</id>
<property name="OrderName" type="java.lang.String">
<column name="ORDER_NAME" />
</property>
<many-to-one name="customer" class="Customer" fetch="join">
<column name="CUSTOMER_ID" />
</many-to-one>
</class>
</hibernate-mapping>
Order.hbm.xml
首先,在 Customer 类中添加了 Set 类型的 orders 属性,用来映射 Order。
Order 数据表通过 Customer_Id 来映射 Customer
在 .hbm.xml mapping 文件中,Customer 使用 set 节点设置了 orders 属性
<set name="orders" table="ORDERS" inverse="true">
<key>
<column name="CUSTOMER_ID"></column>
</key>
<one-to-many class="Order"/>
</set>
其中:
name 表示 Customer 中该属性的名字
table 表示所映射的对象的数据表的表名
inverse 用来设置由谁来维护映射关系,inverse 英文意思是相反的,此处设置为 true ,意思是让对方来维护映射关系。inverse 的默认值为 false
子节点 key :用来设置通过哪个列来检索所映射的对象
one-to-many:通过设置 class 属性来指定所映射的对象的类名
order-by:设置 Set 集合中对象如何排序,如:order-by=“Order_Name Desc”,其中 Order_Name 表示数据表中的列名, Desc 表示排序方式
在这里,可以通过设置 cascade 来设置级联关系,具体可以百度,教程中建议不用这个属性,但感觉这个属性还是很方便的,此处留个记号,以后研究
Hibernate 双向一对多映射的更多相关文章
- hibernate双向一对多映射
双向多对一 :Customer类------------>一的一端 Order类----------->多的一端 Customer类:(省略set().get()和构造方法) priv ...
- hibernate进阶--一对多映射配置
hibernate作为一款优秀的ORM框架,广受大家喜爱,也被Java社区公认为持久层的首选.虽然jdbc为Java数据库操 作带来了诸多便利,但是并没有统一SQL语句的写法,而且具体操作数据库的代码 ...
- 菜鸡的Java笔记 - java 双向一对多映射
双向一对多映射 two-way 开发要求: 根据数据表的结构进行简单java类的转换: 要求实现如下的输出信息: 可以根据课程取得全部参与 ...
- Hibernate学习之双向一对多映射(双向多对一映射)
© 版权声明:本文为博主原创文章,转载请注明出处 1.双向映射与单向映射 - 一对多单向映射:由一方(教室)维护映射关系,可以通过教室查询该教室下的学生信息,但是不能通过学生查询该学生所在教室信息: ...
- hibernate笔记--双向一对多映射方法
前两节写了两个例子,分别是单向多对一的映射和单向一对多的映射,这一节继续以这个例子讲一下双向一对多的映射方法,如下图所示: 很多时候,我们既想从一对端获取多对端的信息,又想从多对端获取一对端的数据,这 ...
- Hibernate(六):映射一对多关联关系、双向一对多映射
在领域模型中,类与类之间最普通的关系就是关联关系. 在UML中,关联是有方向的: 例如:Customer与Order,一个用户能发出多个订单,而一个订单只能属于一个用户. 单向关联 1)从Order到 ...
- hibernate之一对多映射
目录 第一章 课程简介 第二章 Hibernate中的单向一对多关联 2-1 一对多映射简介 2-2 hibernate的基础配置 2-3 创建HibernateUtil工具类 2-4 在mysql数 ...
- Hibernate双向多对多关联
一.配置双向多对多关联 以Project类(项目)和Emp类(员工)为例: 1.创建Project类,并需要定义集合类型的Emp属性 public class Project { //编号 priva ...
- 注解:【无连接表的】Hibernate双向1->N关联
Person与Address关联:双向1->N,[无连接表的],推荐使用 #由N端控制关联关系 #对于指定了mappedBy属性的@OneToMany,@ManyToMany,@OneToOne ...
随机推荐
- 微服务与容器化Docker
1.Docker的应用案例 2. 3. 4.docker的核心:镜像.仓库.容器 Build构建镜像:类似于集装箱. Ship运输镜像,仓库:类似于码头.将镜像运输到仓库. Run运行镜像:容器:类似 ...
- <二>ELK-6.5.3学习笔记–使用rsyslog传输管理nginx日志
http://www.eryajf.net/2362.html 转载于 本文预计阅读时间 28 分钟 文章目录[隐藏] 1,nginx日志json化. 2,发送端配置. 3,接收端配置. 4,配置lo ...
- 解读Scrapy框架
Scrapy框架基础:Twsited Scrapy内部基于事件循环的机制实现爬虫的并发.原来: url_list = ['http://www.baidu.com','http://www.baidu ...
- JDK1.8 HashMap源码分析
一.HashMap概述 在JDK1.8之前,HashMap采用数组+链表实现,即使用链表处理冲突,同一hash值的节点都存储在一个链表里.但是当位于一个桶中的元素较多,即hash值相等的元素较多时 ...
- 1.4分布式-通讯协议TCP/IP
服务器和浏览器的通讯依靠http协议,今天就来分析一下http协议的具体内容以及https的加密过程.除了这些协议,为了增加服务器和浏览器交互的可拓展性,也出现了rest风格的请求方式,方便调用接口. ...
- 我的 Erdos 数是 4
我的 Erdos 数是 4. 呵呵. 图书馆开通了一个月的 mathscinet 数据库查询. 本来想买个 pde 的最新进展, 结果不能查询, 就算了.
- Geometric regularity criterion for NSE: the cross product of velocity and vorticity 3: $u\times \f{\om}{|\om|}\cdot \f{\vLm^\be u}{|\vLm^\be u|}$
在 [Chae, Dongho; Lee, Jihoon. On the geometric regularity conditions for the 3D Navier-Stokes equati ...
- [再寄小读者之数学篇](2014-11-02 Herglotz' trick)
设 $f$ 是 $\bbR$ 上周期为 $1$ 的连续可微函数, 满足 $$\bee\label{141102_f} f(x)+f\sex{x+\frac{1}{2}}=f(2x),\quad\for ...
- PL/SQl编程 基本语法
/*输出hello world*/ DECLARE BEGIN DBMS_OUTPUT.PUT_LINE('Hello World'); END; --set serveroutput on; /** ...
- python中的__len__,__getitem__ __setitem__ __delitem__ __contains__
可变集合需要实现: __len__ __getitem__ __setitem__ __delitem__不可变集合需要实现: __len__ __getitem__ __len__:返回 ...