附代码:

  

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 双向一对多映射的更多相关文章

  1. hibernate双向一对多映射

    双向多对一 :Customer类------------>一的一端   Order类----------->多的一端 Customer类:(省略set().get()和构造方法) priv ...

  2. hibernate进阶--一对多映射配置

    hibernate作为一款优秀的ORM框架,广受大家喜爱,也被Java社区公认为持久层的首选.虽然jdbc为Java数据库操 作带来了诸多便利,但是并没有统一SQL语句的写法,而且具体操作数据库的代码 ...

  3. 菜鸡的Java笔记 - java 双向一对多映射

    双向一对多映射    two-way    开发要求:        根据数据表的结构进行简单java类的转换:        要求实现如下的输出信息:            可以根据课程取得全部参与 ...

  4. Hibernate学习之双向一对多映射(双向多对一映射)

    © 版权声明:本文为博主原创文章,转载请注明出处 1.双向映射与单向映射 - 一对多单向映射:由一方(教室)维护映射关系,可以通过教室查询该教室下的学生信息,但是不能通过学生查询该学生所在教室信息: ...

  5. hibernate笔记--双向一对多映射方法

    前两节写了两个例子,分别是单向多对一的映射和单向一对多的映射,这一节继续以这个例子讲一下双向一对多的映射方法,如下图所示: 很多时候,我们既想从一对端获取多对端的信息,又想从多对端获取一对端的数据,这 ...

  6. Hibernate(六):映射一对多关联关系、双向一对多映射

    在领域模型中,类与类之间最普通的关系就是关联关系. 在UML中,关联是有方向的: 例如:Customer与Order,一个用户能发出多个订单,而一个订单只能属于一个用户. 单向关联 1)从Order到 ...

  7. hibernate之一对多映射

    目录 第一章 课程简介 第二章 Hibernate中的单向一对多关联 2-1 一对多映射简介 2-2 hibernate的基础配置 2-3 创建HibernateUtil工具类 2-4 在mysql数 ...

  8. Hibernate双向多对多关联

    一.配置双向多对多关联 以Project类(项目)和Emp类(员工)为例: 1.创建Project类,并需要定义集合类型的Emp属性 public class Project { //编号 priva ...

  9. 注解:【无连接表的】Hibernate双向1->N关联

    Person与Address关联:双向1->N,[无连接表的],推荐使用 #由N端控制关联关系 #对于指定了mappedBy属性的@OneToMany,@ManyToMany,@OneToOne ...

随机推荐

  1. 解决CentOS出现"No package redis available"提示问题

    [root@bogon src]# yum install redis Loaded plugins: fastestmirror, langpacks Repository base is list ...

  2. 转:Mac操作技巧 | "键盘侠"必备快捷键

    看到一篇网友整理的比较好的“Mac操作技巧 | "键盘侠"必备快捷键”,转载过来分享给大家!希望能有帮助. 更多专题,可关注小编[磨人的小妖精],查看我的文章,也可上[风云社区 S ...

  3. goroutine 和 线程的区别

    我们在使用Go语言进行开发时,一般会使用goroutine来处理并发任务.那么大家有没有考虑过goroutine的实现机制是什么样的?很多同学会把goroutine与线程等同起来,但是实际上并不是这样 ...

  4. n对n

    创建一对一的关系:OneToOne("要绑定关系的表名") 创建一对多的关系:ForeignKey("要绑定关系的表名") 创建多对多的关系:ManyToMan ...

  5. Java 基础知识点

    很多 Java 基础的东西都忘记了, 有必要再复习一些基本的知识点. 本文主要参考 https://github.com/Snailclimb/JavaGuide ================== ...

  6. 第九节,MXNet:用im2rec.py将图像打包生成.rec文件

    1.生成.lst文件 制作一个文件路径和标签的列表: import os import sys #第一个参数是输入路径 input_path=sys.argv[1].rstrip(os.sep) #第 ...

  7. Spring注解@Configuration和Java Config

    1.从Spring 3起,JavaConfig功能已经包含在Spring核心模块,它允许开发者将bean定义和在Spring配置XML文件到Java类中.但是,仍然允许使用经典的XML方式来定义bea ...

  8. POJ 2031 Building a Space Station (计算几何+最小生成树)

    题目: Description You are a member of the space station engineering team, and are assigned a task in t ...

  9. Dilated Convolution

    各种各样的卷积方式, 详细见 各种卷积的 gif 图 Convolution animations  Padding, strides Transposed convolution animatio ...

  10. k64 datasheet学习笔记26--Oscillator (OSC)

    1.前言 OSC模块是一个晶体振荡器. 该模块使用晶体或谐振器与外部连接,为MCU产生一个参考时钟. 主要为下图红色框住的部分 2.特性和模式 Supports 32 kHz crystals (Lo ...