多对多关联映射(双向)
private Integer id;
private String name;
private Set<Role> roles;
//一系列的setter.getter方法
@Override
public String toString() {
return "Player: " + name;
}
}
private Integer id;
private String name;
private Set<Player> players;
//一系列的setter.getter方法
@Override
public String toString() {
return "Role: " + name;
}
}
<id name="id" length="4">
<generator class="native"></generator>
</id>
<property name="name" length="10"></property>
<!--table="sxt_hibernate_user_role"含义,用来指定中间表 -->
<set name="roles" table="sxt_hibernate_player_role" cascade="save-update">
<!--<key column="user_id">含义,指定中间表中用来指向本表的外键 -->
<key column="player_id"></key>
<!-- column含义,用来指定中间表中用来指向另一端表的外键 -->
<many-to-many class="com.sxt.hibernate.many2many.entity.Role" column="role_id"></many-to-many>
</set>
</class>
<id name="id" length="4">
<generator class="native"></generator>
</id>
<property name="name" length="10"></property>
<set name="players" table="sxt_hibernate_player_role" cascade="save-update">
<!-- 注意这里指定的外键要和另一端映射文件中的相对应 -->
<key column="role_id"></key>
<!-- 注意这里指定的外键要和另一端映射文件中的相对应 -->
<many-to-many class="com.sxt.hibernate.many2many.entity.Player" column="player_id"></many-to-many>
</set>
</class>
Session session = HibernateUtils.getSession();
Transaction t = session.beginTransaction();
try {
/**
* 测试插入数据
*/
/* Player player1=new Player();
player1.setName("姚明");
Player player2=new Player();
player2.setName("詹姆斯");
Player player3=new Player();
player3.setName("科比");
Role role1=new Role();
role1.setName("中锋");
Set<Player> players1=new HashSet<Player>();
players1.add(player1);
players1.add(player2);
role1.setPlayers(players1);
Role role2=new Role();
role2.setName("后卫");
Set<Player> players2=new HashSet<Player>();
players2.add(player2);
players2.add(player3);
role2.setPlayers(players2);
session.save(role1);
session.save(role2);*/
/**
* 测试加载数据
*/
Role role=(Role)session.load(Role.class, 4);
System.out.println(role);
for(Iterator<Player> players=role.getPlayers().iterator();players.hasNext();){
System.out.println(players.next());
}
t.commit();
} catch (HibernateException e) {
e.printStackTrace();
t.rollback();
} finally {
HibernateUtils.closeSession(session);
}
}
}
多对多关联映射(双向)相关推荐
- 步步为营Hibernate全攻略(三)剪不断理还乱之:多对多关联映射
hibernate多对多关联映射同样可以分为单向的关联映射和双向的关联映射,与一对多关联映射相比,双方之间的关系将不再由其中多的一方维护而是变成了由第三张表来维护.第三张表的出现不仅减少了两张表中的数 ...
- NHibernate从入门到精通系列(7)——多对一关联映射
内容摘要 多对一关联映射概括 多对一关联映射插入和查询 多对一关联映配置介绍 一.多对一关联映射概括 关联关系是实体类与实体类之间的结构关系,分别为"多对一"."一对一& ...
- hibernate之多对多关联映射
hibernate之多对多关联映射 转载于:https://www.cnblogs.com/liuyang-1037/archive/2009/06/06/1497589.html
- mybatis手写多对多关联映射
mybatis手写多对多关联映射 1.一对一关联查询 1.1resultType实现 1.2resultMap实现 2.一对多关联查询 3.多对多关联查询 4.resultType与resultMap ...
- 【Hibernate框架】关联映射(多对多关联映射)
按着我们的总结行进计划,接下来,就是有关于多对多映射的总结了. 我们来举个例子啊,很长时间以来,房价暴涨不落,但是还有很多人拥有很多套房产,假如说,一个富豪拥有九套房产,家里人么准去住哪一套,我们就以 ...
- hibernate_day03_多对多关联映射
hibernate_day03_MySQL数据库-表与表之间的多对多关系-实例 hibernate_day03_一对多相关操作 Hibernate多对多关系的配置 : (1)创建表 : 用户表 [cr ...
- JAVA两个表相关联_关于Java:如何将多对多关联映射到映射到两个不同表的类?...
我有一个凭证-POJO映射到两个表. 第一个映射分配一个实体名称" voucherA",并将POJO映射到TableA. 第二个映射使用" voucherB"作 ...
- MyBatis 多对多关联映射
示例[通过班级查询老师信息] 创建t_classes 创建t_classessTeacher 创建t_teacher 创建Classes package com.po; import java.uti ...
- 多对多关联映射(双向关联)见项目:me_many_to_many
1.模型 一个用户拥有多个角色,一个角色拥有多个用户. 2.实体类(省略set,get方法) public class User { private int id; private String ...
最新文章
- 为什么 Linux 系统调用会消耗较多资源
- 《机器人与数字人:基于MATLAB的建模与控制》——2.3节指数映射和k过程
- PYTHON调用JENKINS的API来进行CI
- MySQL数据导入oracle
- Python小游戏(并夕夕版飞机大战)
- 计算机科学与技术初级知识,计算机科学与技术专业课程有哪些
- python search函数 中文_python使用正则表达式的search()函数实现指定位置搜索功能...
- php data类型转换,【原】超简单类型转换(DataTable
- Linux系统编程--3(exec 函数族,僵尸进程和孤儿进程,wait和wait_pid回收子进程)
- (72)Verilog HDL系统函数和任务:$display
- mysql 5.6.14源码安装_CentOS 6.4下编译安装MySQL 5.6.14详细步骤
- 二叉树的基本操作(C)
- C语言编程学习的经验
- Android 原生GPS定位 判断室内室外
- HTML学习(三):排版
- element ui 手动清除表单效验提示语
- FPGA 串口通信——通用模块
- Fetcher failure for URL: ‘gitsm://github.com/Xilinx/qemu.git;protocol=https petalinux build 问题
- 抖音常见的几种违规行为,抖音新手应该注意防范:国仁楠哥
- 0PP0升级android版本,oppo哪些手机可以升级安卓11 oppo手机升级安卓11方法