Hibenrate之多对多关联

Hibernate多对多关联可以分成单向和双向,多对多关系会借助中间表来保存映射信息,所以一般少用;

  • 单向

实例:学生可以在多个学校就读过,多个学校也会有多个学生;

TStudent:

public class TStudent implements java.io.Serializable {
	private static final long serialVersionUID = 1L;

	private Integer stuId;
	private String name;
	private Set<TSchool> tschool;
        get()/set()

 TStudent.hbm.xml:

<hibernate-mapping package="com.keith.many2many">
	<class name="TStudent" table="TStudent">
		<id name="stuId">
			<generator class="native"/>
		</id>
	
		<property name="name" />
		
		<set name="tschool" table="stu_school_link" cascade="all">
			<key column="stuId"/>
			<many-to-many class="TSchool" column="schoolId"/>
		</set>
	</class>	
</hibernate-mapping>

 TSchool:

public class TSchool implements java.io.Serializable {
	private static final long serialVersionUID = 1L;

	private Integer schoolId;
	private String name;
        get()/set()
}

 TSchool.hbm.xml:

<hibernate-mapping package="com.keith.many2many">
	<class name="TSchool" table="TSchool">
		<id name="schoolId">
			<generator class="native"/>
		</id>
		<property name="name" />
	</class>	
</hibernate-mapping>

 测试:

//添加数据
		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
		session.beginTransaction();

		TStudent student = new TStudent();
		student.setName("柯");

		Set<TSchool> schools = new HashSet<TSchool>();
		TSchool school = new TSchool();
		school.setName("小学");
		TSchool school1 = new TSchool();
		school1.setName("中学");
		TSchool school2 = new TSchool();
		school2.setName("大学");

		schools.add(school);
		schools.add(school1);
		schools.add(school2);
		student.setTschool(schools);
		
		session.save(student);
		session.getTransaction().commit();

//查询数据
		TStudent stu = (TStudent) session.load(TStudent.class, 1);
		System.out.println("student's Name:" + stu.getName());

		Iterator<TSchool> it = stu.getTschool().iterator();
		TSchool school = null;
		while (it.hasNext()) {
			school = it.next();
			System.out.println("student's school Name"+school.getName());
		}
  •  双向,在TSchool一方加入TStudent对象;

TSchool:

public class TSchool implements java.io.Serializable {
	private static final long serialVersionUID = 1L;

	private Integer schoolId;
	private String name;
	private Set<TStudent> stus = new HashSet();
        get()/set()
}

 TSchool.hbm.xml:

<hibernate-mapping package="com.keith.many2many.doubleSide">
	<class name="TSchool" table="TSchool">
		<id name="schoolId">
			<generator class="native"/>
		</id>
	
		<property name="name" />
		<set name="stus" table="stu_school_link" cascade="save-update">
			<key column="schoolId"/>
			<many-to-many column="stuId" class="TStudent"/>
		</set>
	</class>	
</hibernate-mapping>

 TStudent:

public class TStudent implements java.io.Serializable {
	private static final long serialVersionUID = 1L;

	private Integer stuId;
	private String name;
	private Set<TSchool> tschool;
        get()/set();
}
 

TStudent.hbm.xml:

<hibernate-mapping package="com.keith.many2many.doubleSide">
	<class name="TStudent" table="TStudent">
		<id name="stuId">
			<generator class="native"/>
		</id>
	
		<property name="name" />
		
		<set name="tschool" table="stu_school_link" cascade="save-update">
		<!-- "stuId":连接表中关联当前实体类的列名 -->
			<key column="stuId"/>
			<!-- "schoolId":是连接表中关联本实体类的外键 -->
			<many-to-many class="TSchool" column="schoolId"/>
		</set>
	</class>	
</hibernate-mapping>

 附上测试类;

 

配合上述本地模型资源文件 立即下载

相关推荐

集成学习之GBDT

GBDT

joejoeqian的博客 1257

关于hibernate一对多,多对一,多对多的详细解析

在hibernate中,这些映射关系是通过配置文件和实体类实现的。 多对一: <many-to-one name="dept" class="com.web.bean.Dept" column="deptno"></many-to-one> 在多个雇员对应同一个部门中,首先在雇员类中有部门类的对象作为雇员类的属性,name的值与字段值一致,然后给出雇员类的地址,最后通过...

Mark_able 315

首个FDA认证开源医学影像AI平台Comp2Comp:从CT自动分析到临床部署全解析

深度学习模型在医学影像分析领域正成为变革性力量,其核心原理是通过卷积神经网络自动学习图像特征,实现精准分割与检测。这一技术价值在于将高度依赖医生经验的定性、主观判断,转化为高效、客观、可重复的定量分析,极大提升了诊断的一致性和工作效率。在应用场景上,医学影像AI已广泛渗透于疾病筛查、辅助诊断、预后评估及治疗方案规划等多个环节。本文聚焦于获得FDA 510(k)认证的开源平台Comp2Comp,它集成了主动脉钙化评分和椎体骨密度分析双任务,通过串联式的U-Net分割网络与目标检测模型,构建了从DICOM预处理

weixin_33725126的博客 653

hibernate的基础学习--多对多关联

多对多采用学生老师模型进行测试 学生配置文件: 1 <?xml version="1.0" encoding="utf-8" ?> 2 <!DOCTYPE hibernate-mapping PUBLIC 3 "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 4 "http://www...

diaochifu3136的博客 146

同态加密与SEAL库实战:CKKS参数调优避坑指南

本文深入探讨了同态加密技术中CKKS方案的参数调优实践,重点解析了SEAL库中`poly_modulus_degree`、`coeff_modulus`和`scale`三大核心参数的配置技巧与避坑指南。通过实战案例展示了如何平衡计算深度、精度与性能,为开发者提供了一套完整的参数优化方法论,帮助避免常见的'scale out of bounds'等错误,显著提升同态加密应用的可靠性和效率。

weixin_29315569的博客 228

ESP32+micro-ROS机器人开发实战:轻量级ROS2嵌入式集成

ROS2是现代机器人软件栈的核心框架,其基于DDS的分布式通信与QoS保障能力为多节点协同提供基础支撑;而micro-ROS作为专为微控制器优化的ROS2兼容中间件,解决了资源受限设备(如ESP32)接入ROS2生态的关键难题。其通过分层架构将DDS通信下沉至上位机Agent,使MCU仅需运行轻量Client,大幅降低内存开销(实测<180KB)并保留标准ROS2接口语义。该方案广泛应用于教育机器人、移动底盘、传感器节点等嵌入式场景,尤其适合基于ESP-IDF开发的Wi-Fi/BLE物联网机器人系统。本文以

weixin_29025501的博客 400

Hibenate的单向关联映射(注解版)

一:单向1-1关联 以老夫老妻为例子来说明一下,在中国以前是以丈夫主导地位,所以我这里以t_husband作为主表,t_wife作为从表 1.1:无连接表的 (1)首先创建实体类,然后使用注解表示出来两者的关联关系 import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence....

qq_38777614的博客 297

Agv、Rgv 车辆控制调度系统开发第一篇

Agv、Rgv 车辆控制调度系统第一篇为什么要做这个系统先看作品从头讲起算法讲解编程语言从哪里开始继续深入预告 为什么要做这个系统 说白了是为了赚钱,在一个项目中发现公司买别人家的调度系统要几十万,还只是一个项目的实施,从那天起我就决定自己写一套,用了一年的时间写出来后,才发现根本卖不掉,卖不掉就卖不掉吧,反正我现在已经吧写这套系统当成了一种乐趣,如果不让我写了我反而不适应,但是没有人欣赏我的成果我反而很难受,所以决定吧这个系统的创作过程,写下来,给后面的人一些建议,少走点弯路。 先看作品 从头讲起 在

持续分享调度系统开发过程 2万+

hibernate 单向关联&双向关联

多对一: 就是A表中的一个字段是B表的主键。多个A表中的数据可以对应一个B表中的数据,同理,一个B表中的数据可以同时对应多个A表中的数据。   单向关联与双向关联对数据表的要求其实是一致的。满足对应的关联要求即可,也就是A表中的一个字段是B表中的主键。 单向关联与双向关联的需求是不一样的。单向关联,只需要可以通过主表找到控表即可。这个很简单,通过简单的sql语句,select B from...

qq_23835497的博客 647

第十一届全国大学生GIS应用技能大赛——广西区域发展布局示意图

我们需要制作一幅广西区域发展布局示意图,最终成图参考“数据”文件夹中的广西区域发展布局示意图.png。地图使用的投影坐标系是 Asia_North_Albers_Equal_Area_Conic,其中地理坐标系是China_Geodetic_Coordinate_System_2000,中央经线东经 105°,标准纬线是北纬 25°和北纬 47°,出图比例尺 1:4,780,000。

@HNUSTer的博客 7799

基于Simulink的间接功率控制的矩阵变换器

通过上述步骤,我们成功设计并实现了基于 Simulink 的间接功率控制的矩阵变换器仿真模型。该模型能够通过控制输入电流和输出电压,实现对功率的间接控制,适用于电机驱动、可再生能源系统、电力传输等领域。通过虚拟场景仿真、参数优化和性能评估,验证了系统的稳定性和高效性,并通过调整 PI 控制器参数和优化调制算法,进一步提升了系统的性能。

MHD0815的博客 296

Hibernate 映射多对多关联关系

多对多持久化类和映射文件的搭建1.创建持久化类1.创建Student类package cn.itcast.hibernate0909.manytomany;import java.io.Serializable; import java.util.Set;public class Student implements Serializable{ private Long sid; p

C. 2958

网规第三版:第4章网络资源设备(完结)

第 4 章 网络资源设备 调整内容: 更新主流网络设备(交换机、路由器、防火墙)的技术参数与选型标准 增加国产化网络设备与信创产品的相关内容 精简已淘汰的设备类型与技术指标

鹿鸣天涯 268

Hibenrate实体关联中遇到的问题

1.org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [com.shoponline.merchant.entity.TblCategoryThird#29] 解决办法:实体关联后,缺失了数据的完整性,把原有数据删除,再添加新的数据。 2.Caused by: java.sql.SQL

学而不思 1615

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Hibenrate 中 inverse="true"

    转:http://www.iteye.com/topic/766211   public class Customer { private int id; private String name; private Set orders = new HashSet(); }     即Customer类具有一个set集合...

terryjs 167

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

hibenrate(八)一对一对象关系

一、一对一单/双向外键关联(Annotation) Annotation: @OneToOne @JoinColumn(name="") XML:

无与伦比&Switch* 180

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

精通Hibernate——映射一对多双向自身关联关系

首先我们来看下图: 每种商品类别代表一个Category对象,每一个Category可以和父列表关联,同时也可以和子类别关联,为了表达这种一对多的双向自身关联关系可以在Category类中定义两个属性: parentCategory:引用父类别对象 childCategories:引用一组子类别对象 下面看看Category的源代码:public class Category imp

路漫漫,水迢迢 1361

Hibernate一对多单向关联映射

                   一对多关联映射(单向) 1、People.hbm.xml xml version="1.0" encoding="UTF-8"?>DOCTYPE hibernate-mapping         PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"http://hibernate.so

thinkGhoster的专栏 1534

Hibenrate讲解iverse和cascade以及一对多配置比较好的一篇文章

http://www.iteye.com/topic/314785

endeavor416 153

Hibernate异常等问题

Hibernate中No row with the given identifier exists问题的原因及解决             产生此问题的原因:              有两张表,table1和table2.产生此问题的原因就是table1里做了关联或者(特殊的多对一映射,实际就是一对一)来关联table2.当hibernate查找的时候,table2里的数据没有与table1

datangxiajun的博客 295

Hibernate collection mapping

name: the collection property name table (optional - defaults to property name): the

yinghan2005的专栏 588

Hibenrate_基于单实例配置及使用_初级小结_初级配置

 Hibernate是一个基于JDBC的主流持久化框架,是一个ORM的实现ORM(对象-关系映射机制)创建Hibernate步骤:1:Hibernate配置文件: 文件默认名为:"hibernate.cfg.xml",                文件类型为"-//Hibernate-configuration DTD 3.0//EN"(注:不要搞错了!!!)/..               

Mr_Feeling的专栏 636

NHibernate报错:No row with the given identifier exists

这个和Hibernate错误差不多,原因是你的数据库里面有脏数据,即:外键关联的对应主键内容不存在,就像报的这个错误,查询出的User没有了引用。 产生此问题的原因: 1.有两张表,table1和table2.产生此问题的原因就是table1里做了关联<one-to-one>或者<many-to-one unique="true">(特殊的多对一映射,实际就是一对一)来关联table 2.当hibernate查找的时候,table2里的数据没有与table1相匹配的,这样.

qq_41617901的博客 451

(1)hibenrate入门例子

1 结构图 2 代码 User.java package com.learning; import java.util.Date; public class User { private int id; private String name; private Date birthday; public int getId() { return id; }

jianfpeng241241的专栏 529

hibernate多对一,一对多,多对多,一对一举例案例(注解方式实现)

1. 需要用到的jar包antlr-2.7.7.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.1.Final.jar hibernate-core-4.1.7.Final.jar hibernate-jpa-2.0-api-1.0.1.Final.jar javassist-3.15.0-GA.jar jboss-logging-3.1...

hq.zheng的博客 2162
上一篇: Hibernate之一对多关联
下一篇: SVN起步
keithJava
博客等级 码龄16年 2粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值