对于一对多的关联关系,通常的做法就是在多方映射的数据表中增加一个外键字段,用以保持一方的主键标识符,维持一对多的关联关系。

  一。Husband

Java代码
  1. package com.orm.model;
  2. import java.util.List;
  3. /**
  4. * Created by IntelliJ IDEA.
  5. * User: Zhong Gang
  6. * Date: 10/18/11
  7. * Time: 3:23 PM
  8. */
  9. public class Husband extends DomainObject {
  10. private String name;
  11. private List<Wife> wifes;
  12. public Husband(String name, List<Wife> wifes) {
  13. this.name = name;
  14. this.wifes = wifes;
  15. }
  16. }
Xml代码
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  4. <hibernate-mapping default-access="field">
  5. <class name="com.orm.model.Husband" table="husband">
  6. <id name="id" column="id" type="java.lang.Integer">
  7. <generator class="native"/>
  8. </id>
  9. <property name="name" column="name" type="java.lang.String"/>
  10. <bag name="wifes" cascade="all">
  11. <key column="husbandid"/>
  12. <one-to-many class="com.orm.model.Wife"/>
  13. </bag>
  14. </class>
  15. </hibernate-mapping>

  二。Wife

Java代码
  1. package com.orm.model;
  2. /**
  3. * Created by IntelliJ IDEA.
  4. * User: Zhong Gang
  5. * Date: 10/18/11
  6. * Time: 3:23 PM
  7. */
  8. public class Wife extends DomainObject {
  9. private String name;
  10. private Husband husband;
  11. public Wife(String name) {
  12. this.name = name;
  13. }
  14. }
Xml代码
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
  4. <hibernate-mapping default-access="field">
  5. <class name="com.orm.model.Wife" table="wife">
  6. <id name="id" column="id" type="java.lang.Integer">
  7. <generator class="native"/>
  8. </id>
  9. <property name="name" column="name" type="java.lang.String"/>
  10. <many-to-one name="husband" column="husbandid" class="com.orm.model.Husband"/>
  11. </class>
  12. </hibernate-mapping>

  三。测试代码

Java代码
  1. package com.orm;
  2. import com.orm.model.Husband;
  3. import com.orm.model.Wife;
  4. import com.orm.service.CoupleService;
  5. import junit.framework.TestCase;
  6. import org.springframework.context.ApplicationContext;
  7. import org.springframework.context.support.ClassPathXmlApplicationContext;
  8. import java.util.ArrayList;
  9. import java.util.List;
  10. /**
  11. * Created by IntelliJ IDEA.
  12. * User: Zhong Gang
  13. * Date: 10/18/11
  14. * Time: 3:40 PM
  15. */
  16. public class HibernateOneToManyTest extends TestCase {
  17. private CoupleService coupleService;
  18. @Override
  19. public void setUp() throws Exception {
  20. ApplicationContext context = new ClassPathXmlApplicationContext("classpath:testDataSource.xml");
  21. coupleService = (CoupleService) context.getBean("coupleService");
  22. }
  23. public void testOneToOne() throws Exception {
  24. Wife wife1 = new Wife("wife1");
  25. Wife wife2 = new Wife("wife2");
  26. Wife wife3 = new Wife("wife3");
  27. List<Wife> wifes = new ArrayList<Wife>();
  28. wifes.add(wife1);
  29. wifes.add(wife2);
  30. wifes.add(wife3);
  31. Husband husband = new Husband("husband", wifes);
  32. coupleService.saveOrUpdate(husband);
  33. }
  34. }

  测试结果截图

  

  

  这是一个典型的一对多的双向关联关系,如果你需要的只是一对多的单向关联关系,删除任何一方对另一方的引用的同时删除相应配置文件中的many-to-one或者相应的集合元素即可。最后附上源码以供参考。

Hibernate ORM - 一对多双向关联关系(我是韦小宝)相关推荐

  1. hibernate映射一对多双向关联关系实例

    在电子商务应用中,经常会有这样的需求:根据给定的客户,得到该客户的所有订单:根据给定的订单,得到该订单的所属客户.对于这种双向关联的情况,在Hibernate应用中,也有人叫多对一双向关联,只是叫法不 ...

  2. hibernate的一对多双向关联映射----客户和订单关系

    客户和订单关系:客户是一的一方,订单是多的一方. customer表: CREATE TABLE `customer` ( `ID` int(4) NOT NULL AUTO_INCREMENT , ...

  3. 06章 映射一对多双向关联关系、以及cascade、inverse属性

    当类与类之间建立了关联,就可以方便的从一个对象导航到另一个对象.或者通过集合导航到一组对象.例如: 对于给定的Emp对象,如果想获得与它关联的Dept对象,只要调用如下方法 Dept dept=emp ...

  4. Hibernate映射详解(二)--多对一,一对多单向,一对多双向关联映射

    在我们以前的数据库设计中,设计表就不是一件轻松的事情.多种事物之间往往都是有这样那样的关系的.那怎样设计表格,才能既将事情描述明白,又能使数据库设计的比较合理呢?那里我们提供了好多规范,好多约束来满足 ...

  5. (八)Hibernate的一对多关联关系

    一.概述 例如,以客户(Customer)和订单(Order)为例,一个客户能有多个订单,一个订单只能有一个客户. 从Customer到Order是一对多关联,在java类中的面向对象设计应该一个Cu ...

  6. Hibernate(九)一对多双向关联映射

    上次的博文Hibernate从入门到精通(八)一对多单向关联映射中,我们讲解了一下一对多单向映射的相关 内容,这次我们讲解一下一对多双向映射的相关内容. 一对多双向关联映射 一对多双向关联映 射,即在 ...

  7. JPA中实现双向一对多的关联关系

    场景 JPA入门简介与搭建HelloWorld(附代码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103473937 ...

  8. hibernate的映射之二(一对多双向关联)

    hibernate的一对多双关联 一对多关联映射:在多的一端加入一个外键指向一的一端,它维护的关系是一指向多 hihernate一对多关联映射(双向Dept<----->Emp) 一对多双 ...

  9. hibernate 的一对多关联关系映射配置

    hibernate 是操作实体类: 表是一对多的关系,当创建这2个实体的时候 在一的一方定义一个多的一方的集合 在多的一方定义一个一的一方的对象 表是多对多的关系,当创建这2个实体的时候 在互相中都有 ...

  10. 【SSH系列】Hibernate映射 -- 一对多关联映射

         映射原理        一对多关联映射和多对一关联映射的映射原理是一样一样的,所以说嘛,知识都是相通的,一通百通,为什么说一对多关联映射和多对一关联映射是一样的呢?因为她们都是在多的一端加入 ...

最新文章

  1. 挖矿木马的战略战术分析
  2. std::shuffle-c++
  3. 19、HTML文件上传域
  4. Django中使用极验Geetest滑动验证码
  5. hdu-4704 sum(费马小定理)
  6. 多家大厂接连停产,半导体“最后一里路”面临“瘫痪”?
  7. jq之mousedown
  8. Spring Boot 针对 Java 开发人员的安装指南
  9. 缠中说禅形态挖掘之五笔形态
  10. 在51cto开博补充篇_为何叫~静水流深~
  11. matlab 读取mdf文件路径,访问 MDF 文件 - MATLAB Simulink Example - MathWorks 中国
  12. 统计了300位硬件工程师的工资,我悟了
  13. 智慧城市是什么,建设智慧城市需要哪些核心技术?
  14. 带你了解什么是MySQL数据库(八)数据库锁机制
  15. 百度红包架构分析与推测
  16. 查看已安装Tomcat的版本号
  17. 如何给Pepper机器人配置ROS使其可以到达指定地点
  18. 共享内存—shmget参数shmflg详解—IPC_CREAT、IPC_EXCL、0666(对内存的读写执行权限)
  19. 破解大学寝室智能限电
  20. vue css变量实现多主题皮肤切换

热门文章

  1. Debian旧版本下载
  2. latex文字加粗、斜体
  3. CTF .swp文件泄露 MD5扩展攻击 [What is hash!]
  4. html怎么引用网页链接,网页中各种链接引用方法小结
  5. C++ 求解最小公倍数
  6. 很开心你能来,不遗憾你走开
  7. 《VR/AR技术与应用》笔记 001
  8. 日志:每个软件工程师应该知道的实时数据的统一抽象概念
  9. 构建股票交易平台专业术语
  10. 微信小程序之商品发布+编辑功能(多图片上传功能)