Hibernate双向一对多、双向多对多关联关系中的映射文件怎么写
这里以一对多关联关系为例。以Country类为一端,Competition类为多端。
一个国家可以有多个赛事,但是一个赛事只能属于一个国家。
Country类
public class Country
{
private Integer id;
private String name; // 国家的常用名 private Set<Competition> competitions;// 这个国家拥有的赛事的集合
//setter、getter方法省略
}
Competition类
public class Competition
{
private Integer id;
private String name;// 赛事常用名 private Country country;// 国家
//setter、getter方法省略
}
下面是映射文件
Country端映射文件的一部分
<set name="competitions" table="COMPETITION" inverse="true" lazy="false">
<!--
在一对多关联关系中怎么才能够通过一方查到另一方呢?
靠的是id,一般情况下是由多端维护关联关系,也就是在多端的表中有一列(外键列)是专门用来保存一端的记录的ID的,也就是
映射文件中的<id>标签中对应的那列的值。
那么多端表中的外键列的名字叫什么呢???它的名字就是下面的<key>标签中的<column>标签中的
name属性的值,比如这里的COUNTRY_ID.
需要注意的是这里的<column>标签中的那么属性的值要和多端的映射表中相应的<column>标签中的值相同。
-->
<key>
<column name="COUNTRY_ID" />
</key>
<one-to-many class="com.zcd.exercise.manyToOne.Competition" />
</set>
Competition端的映射文件的一部分
<many-to-one name="country" class="com.zcd.exercise.manyToOne.Country" lazy="no-proxy" >
<column name="COUNTRY_ID" />
</many-to-one>
================================下面是双向多对多关联关系的===========================================
这里以Competition类(C端)和Team类(T端)为例
在双向多对多关联关系中,比如有C端和T端,C端可以拥有多个T端的对象,T端也可以有多个C端的对象。此时,比如C端,怎么才能保存T端的多个ID呢,增加表的列是不可能的。这时候就需要一张中间表。这样C端可以与多个T端的对象对应,T端反之如此。
下面是映射文件的代码
下面是Competition类的
<set name="teams" table="COMPETITION_TEAM" inverse="true" lazy="true">
<!-- 声明外键列的名称 -->
<key>
<column name="C_ID" />
</key>
<!-- 声明所关联的类 -->
<many-to-many class="com.zcd.exercise.footballManyToMany.Team" column="T_ID" />
</set>
下面是Country类的
<set name="competitions" table="COMPETITION_TEAM" lazy="true">
<key>
<column name="T_ID" />
</key>
<many-to-many class="com.zcd.exercise.footballManyToMany.Competition" column="C_ID" />
</set>
Hibernate双向一对多、双向多对多关联关系中的映射文件怎么写的更多相关文章
- Hibernate 建立一对多双向关联关系
下面内容整理自<精通Hibernate>第二版 注:既然是双向关联."一对多双向关联"和"多对一双向关联"是同一回事. 对象位于内存中,在内存中从一 ...
- hibernate中配置单向多对一关联,和双向一对多,双向多对多
什么是一对多,多对一? 一对多,比如你去找一个父亲的所有孩子,孩子可能有两个,三个甚至四个孩子. 这就是一对多 父亲是1 孩子是多 多对一,比如你到了两个孩子,它们都是有一个共同的父亲. 此时孩子就是 ...
- hibernate 2 一对多、多对一 双向映射
多对一或一对多中,在多的一方维护关系效率高 一:java实体类 1.Classes.java package cn.gs.ly.school.entity; import java.util.Set; ...
- Hibernate(6)—— 一对多 和 多对多关联关系映射(xml和注解)总结
俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!涉及的知识点总结如下: One to Many 映射关系 多对一单向外键关联(XML/Annotation) 一对多单向外键关联(XM ...
- Hibernate—— 一对多 和 多对多关联关系映射(xml和注解)总结(转载)
One to Many 映射关系 多对一单向外键关联(XML/Annotation) 一对多单向外键关联(XML/Annotation) 懒加载和积极加载 一对多双向外键关联(XML/Annotati ...
- Hibernate自身一对多和多对多关系映射
一对多关系映射大家都明白,关系双方都一个含有对方多个引用,但自身一对多很多同学都不明白什么意思,那么首先我就说明一下什么是自身一对多,其实也很好理解,自身一对多就是自身含有本身的多个引用,例如新闻类别 ...
- hibernate的一对多、多对一详解
:双向一对多关系,一是关系维护端(owner side),多是关系被维护端(inverse side).在关系被维护端需要通过@JoinColumn建立外键列指向关系维护端的主键列. publ ...
- java框架之Hibernate(3)-一对多和多对多关系操作
一对多 例:一个班级可以有多个学生,而一个学生只能属于一个班级. 模型 package com.zze.bean; import java.util.HashSet; import java.util ...
- hibernate的一对多和多对一关联
一对一的关联就不写了,一般项目也用不到,如果可以一对一就直接合成一个表了,也不会出现一对一的关系. 本文主要研究一对多的关系. 1.一对多的关系研究: (1)RDB中关系表达: 多的一方创建外键指向 ...
随机推荐
- MongoDB 线上环境按照及配置(授权方式启动)
1创建文件repo文件 #vim /etc/yum.repos.d/mongodb-org-3.4.repo [mongodb-org-3.4] name=MongoDB Repository bas ...
- dategrid快速录入一行数据的一波操作
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- java通过超链接和servlet配置实现服务器文件下载
1.在页面上面我们可以简单的写成: <td align="center""> <a href="<c:url value="/ ...
- JS里的居民们4-数组((堆)队列
编码1(队头在最右) 练习如何使用数组来实现队列,综合考虑使用数组的 push,pop,shift,unshift操作 基于代码,实现如按钮中描述的功能: 实现如阅读材料中,队列的相关入队.出队.获取 ...
- jquery插件一直报错:xx is not a function
当然像js文件未引用或者js插件使用方法不对这样的解决办法想必大家都已经试过了. 那么在放弃前请最后看一下是不是引用了两个jquery文件. 引用了两个jquery文件! 引用了两个jquery文件! ...
- 图片大于div时的居中显示
当图片大于div时,想要图片居中显示,如果图片等比例缩小可能会导致图片不能填充整个div,如果直接将图片不设置宽高,将其外层div设置overflow:hidden:这时即使外层div设置了水平垂直居 ...
- CentOS7 下安装 SublimeText3
原文地址:http://www.sundabao.com/centos-%E5%AE%89%E8%A3%85sublime-text-3/ Centos 安装Sublime text 3 Centos ...
- c++开发ocx入门实践三--基于opencv的简易视频播发器ocx
原文:http://blog.csdn.net/yhhyhhyhhyhh/article/details/51404649 利用opencv做了个简易的视频播放器的ocx,可以在c++/c#/web ...
- Android 集成百度统计
在这里简单的介绍下怎么统计自己研发的APP 的用户活跃度,和使用量,以此来展示自己APP的用户使用量! 我们的APP都需要注入数据分析,以供我们实时的了解APP的下载和使用量提供了依据! 不过我还是更 ...
- Android网络通信库Volley简介(转)
以前反编译过android market,发现里面有用到volley,起这么个名字不知道啥用的,现在才知道主讲者Ficus Kirkpatrick 就是负责开发Google play 的. 看完视频, ...