Hibernate多表映射关系

Hibernate学习笔记 多表映射 前面说了Hibernate的单表映射,由于是实体类和数据表之间一对一的映射,所以比较简单。现在就来说说多表映射,这需要涉及到多个实体类和数据表之间的关系。因此稍微复杂一点。建立实体类我建立了两个实体类,一个作者类,一个文章类,其他方法都忽略了,就留下了注解。作者类如下:@Entity public class Author { @Id @GeneratedValue(strategy 阅读详情
1. 当两个表建立了一个中间关联表时,在配置文件中应该设置好中间表的关联属性
例如:角色表(roles) 菜单表(menus)关联表(rolemenu)
角色表中的配置文件是:
    <hibernate-mapping package="com.cw.hibernate.entity">
    <class name="UserRoles" table="USER_ROLES">
        <id name="roleid" column="ROLEID" type="java.lang.Long">
            <generator class="native"/>
        </id>
    <property name="rolename" column="ROLENAME" type="java.lang.String"  not-null="true" />
        <set name="userRoleMenuSet" table="USER_ROLE_MENU" inverse="true" lazy="true">
            <key column="ROLEID"/>
            <many-to-many class="UserMenus" column="MENUID"/>
        </set>
    </class>
</hibernate-mapping>
菜单表中的配置文件是:
<hibernate-mapping package="com.cw.hibernate.entity">
    <class name="UserMenus" table="USER_MENUS">
        <id name="menuid" column="MENUID" type="java.lang.Long">
            <generator class="native"/>
        </id>
        <property name="menuname" column="MENUNAME" type="java.lang.String"  not-null="true" lazy="true"/>
        <set name="userRoleMenuSet" table="USER_ROLE_MENU" inverse="true" lazy="true">
            <key column="MENUID"/>
            <many-to-many class="UserRoles" column="ROLEID"/>
        </set>
    </class>
</hibernate-mapping>
关联表的配置文件是:
    <class name="UserRoleMenu" table="USER_ROLE_MENU">
        <id name="id" column="ID" type="java.lang.Long">
            <generator class="native"/>
        </id>
<many-to-one name="userMenus" column="MENUID" class="UserMenus"  not-null="true" lazy="true" />
        <many-to-one name="userRoles" column="ROLEID" class="UserRoles"  not-null="true" lazy="true" />
    </class>
主要是看,<set></set>中的相关映射。
那么在查询中要想通过 角色 来查询 关联表中存在的 菜单就可以这样写SQL语句:
String hsql = " from UserMenus menu where menu.userRoleMenuSet.roleid ="+roleid;
查询得到的结果就是 菜单的实体类对象
这个操作实现的是 查询角色所拥有的菜单权限 。

其中:UserMenus 是 菜单表的 实体类 ,userRoleMenuSet 是关联表的 name属性
<set name="userRoleMenuSet" table="USER_ROLE_MENU" inverse="true" lazy="true">
      <key column="MENUID"/>
      <many-to-many class="UserRoles" column="ROLEID"/>
</set>
Set 中:table 是 数据库中的关联表, key 是映射的外键
<many-to-many class="UserRoles" column="ROLEID"/>
是指UserRole表的ROLEID与菜单的MENUID存在多对多的关系,即一个角色可以拥有多个菜单,一个菜单也可以被多个角色所拥有。

注意:要修改自动生成的实体类,修改中间关联表的属性
Private UserRoles user;
Private UserMenus menu;
改成
Private List user = new ArrayList();
hibernate多表联合查询 hibernate多表联合查询实例,很经典的查询语句和总结. 立即下载

相关推荐

Hibernate 多表映射关系配置

Hibernate 多表映射关系配置 如,一对一 多对一 多对多等

Hibernate多表关联查询记录映射

通常情况下,单表的查询比较简单,在hibernate中可以将查询记录直接映射到具体的实体类,因为通常会通过JPA注解将数据表和实体类建立映射关系,在查询数据,保存数据时,可以直接操作java实体类,但是涉及到多表查询,查询的多条记录,如果也要和java的类建立关系映射,需要做一些处理。 hibernate查询支持多种,如使用基本实体类对象查询,HQL查询,QBC(Query By Criteria)以及原生sql语句查询 我个人在复杂查询时候还是喜欢用原生sql查询,因为HQL查询,操作的是实体类对象,

小蜜蜂1010的博客 1766

离线反激转换器反馈环路设计:从理论到实践的Type II补偿器详解

在开关电源设计中,反馈环路稳定性是决定电源性能与可靠性的核心。其本质是通过补偿网络对功率级的小信号特性进行校正,以构建一个具有足够相位裕度和增益裕度的闭环系统。反激转换器作为一种广泛应用的隔离拓扑,其功率级在连续导通模式(CCM)和非连续导通模式(DCM)下呈现不同的零极点特性,这直接决定了补偿器的选型。Type II补偿器因其传递函数中固有的积分环节、低频零点与高频极点,恰好能与反激功率级的1P2Z(一个极点、两个零点)特性形成互补,有效塑造理想的回路增益曲线,实现快速稳定的动态响应。本文聚焦于采用TL4

weixin_30162121的博客 504

Hibernate学习三(多对多表的映射、HQL、QBC)

目录 一、多对多表的映射文件配置详解 1、Hibernate的多表关联关系映射 2、多对多表保存数据注意事项讲解 3、加载策略 1)类级别的加载策略 2)关联级别的加载策略 3)fetch 4)多对一的加载策略 5)批量加载(了解) 二、HQL 1、HQL简介 2、选择查询 1)查询一个结果: 2)投影查询: 3)排序、聚合函数、分组查询 4)连接查询 5)命名查...

qq_36964872的博客 441

通过Jlink和PyLink读取蓝牙mac地址--Nordic&silicon labs

本文介绍在不开机的情况下读取蓝牙的mac地址,这里介绍两个平台,Nordic和Silicon Labs。 1. 通过Jlink Commander工具连接上目标板 选择当前芯片的型号 2. 使用mem命令查看mac地址 首先需要知道mac地址存储在芯片的哪个地址。 Nordic: 寄存器DEVICEADDRTYPE的第一个bit代表mac地址的类型,这里为1。DEVICEADDR[0]和DEVICEADDR[1]的低16bit代表了MAC地址,其中DEVICEADDR[1]的第15位应该或上DE

ching的专栏 1651

《Halcon 100项目-9》Halcon彩色线序检查

Halcon彩色线序检查

doubleintfloat的博客 1045

hibernate 实现多表连接查询

Hibernate主要支持两种查询方式:HQL查询和Criteria查询。前者应用较为广发,后者也只是调用封装好的接口。 现在有一个问题,就是实现多表连接查询,且查询结果集不与任何一个实体类对应,怎么解决呢? 举个例子: 现在有两个表,一个users用户表, 一个goods商品表,每个用户可以有多个商品,而一个商品只能对应一个用户。 users表中的字段:userId,userName,t...

weixin_33755557的博客 936

sap 标准委外和工序委外_SAP PP 工序委外详解

在SAP里有外包和外协两种:外包:指把原材料发出去,扣减库存,然后供应商加工生产,最后再作为成品入库。主要是在MM模块下实现的。对应的英语叫Subcontracting。外协:一般是指某种工序外协,在工艺路线里设置某个工序为外协后,系统自动会产生一个采购订单,一般是指采购某种服务。采购回来后再继续本公司的其他工序。主要是在PP模块下实现的。对应的英语叫Processing。2.当有委外加工的业务流...

weixin_26849971的博客 4581

Hibernate 框架总结(四):多张表的关联映射

Hibernate 框架总结(一):简单开发Hibernate 框架总结(二):session的获取方式及hibernate对象的生命周期Hibernate 框架总结(三):主键的生成策略表与表之间的关系存在三种关系一对一:丈夫——妻子, 学生——学生证一对多:学生——班级, 皇帝——大臣多对多:学生——课程, 学生——老师配置关系映射的时候,无论是什么关系,要保证你中有我,我中有你的思想一对一开...

llllllxj的博客 2652

如何使用AKShare作为OpenBB的数据源

`openbb_akshare`项目是 OpenBB 的数据源扩展。可以用于查询A股和港股数据

FinAnalyzer金融分析工具 3196

【密码专栏】超强进阶:PLONK VS Groth16(上)

前言 前文《天冷了,干了这碗“零知识证明”鸡汤》对「零知识证明学习」作了一个形象化的比喻:炖鸡汤。那么本系列的主要内容可以简单概括为《论高压锅炖鸡汤的一百种方法》之方法二。在学会了“清炖鸡汤”之后,不如来一口“阿胶鸡汤”补补脑细胞吧! 正如鸡汤不同风味之间各具千秋,不同的zk-SNARK方案也各有所长。zk-SNARK方案可以被分为【通用】与【非通用】zk-SNARK,PLONK与Groth16分别是其中的典型代表。通过本系列,我们将对PLONK算法内容作简要介绍,并指出PLONK和Groth16算法思路上

Hyperchain的博客 1805

STM32从入门到实战:架构选型、核心外设与开发环境全解析

在嵌入式开发中,32位微控制器凭借高性能与丰富外设成为主流选择。其核心基于ARM Cortex-M内核,通过哈佛架构与流水线技术实现高效指令执行,并借助NVIC中断控制器与时钟树实现精准实时控制。这类芯片的技术价值在于平衡算力、功耗与成本,广泛应用于工业自动化、物联网节点和电机控制等领域。以STM32为例,其家族覆盖Cortex-M0+到M7内核,选型需综合算力、外设与功耗约束。开发环境从Keil到CubeIDE再到VSCode,配合HAL/LL库可快速构建工程。掌握GPIO复用、定时器PWM、ADC多通道

weixin_34377919的博客 395

基于线性光耦HCNR200的高压直流采样电路设计与精度优化

本文详细介绍了基于线性光耦HCNR200的高压直流采样电路设计与精度优化方法。针对直流高电压测量中的安全与干扰问题,提出采用HCNR200光耦隔离方案,实现高精度线性传输。文章深入解析电路设计关键细节,包括电阻网络、运放选型、滤波电容配置等,并提供精度优化实战技巧与常见问题排查指南,助力新能源电动汽车和高压储能系统的高压直流采样应用。

weixin_42713608的博客 580

hibernate中多表映射关系配置

1.one-to-many一对多关系的映射配置(在一的一方实体映射文件中配置) <!-- cascade属性:级联操作属性 save-update: 级联保存,保存客户时,级联保存客户关联的联系人 delete:级联删除,删除客户时,级联删除客户关联的联系人 ...

weixin_30664615的博客 198

【Zephyr存储专题】06_存储块设备驱动开发(Nand Flash)

本文介绍了基于Zephyr系统的NAND Flash驱动实现方案,重点阐述了Flash驱动模型的核心架构和关键API设计。

zero的博客 1804

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

hibernate3+表间设计(多表设计、多表映射、多表增删改操作、hibernate中的多表查询)...

第1章多表设计 1.1多表设计的总则 问题:我们为什么要学习多表映射? 答: 在实际开发中,我们数据库的表难免会有相互的关联关系,在操作表的时候就有可能会涉及到多张表的操作。试想一下,如果把我们web阶段的在线商城案例的持久层改为hibernate的实现,我们现在根本无法实现功能。究其原因是我们在线商城中表之间都是有关联关系的。 例如:商品和分类,用户和订单,订单和商品等等...

banxihan9345的博客 303

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Hibernate继承映射之三_用多张表映射2

【回顾】Hibernate继承映射之一_用一张表映射 【回顾】Hibernate继承映射之二_用多张表映射 这次给大家带来的是继承映射的第二种方法:用多张表映射,每张表都有公共字段! 映射情景回顾以及各实体类在这里就不重复写了,需要的都在:http://blog.youkuaiyun.com/nthack5730/article/details/45366983 【因为除了映射文件改变而已

机智猫 1万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Hibernate:多对多级联操作

学习多表映射配置要遵循的步骤 第一步:确立两张表之间的关系 第二步:在数据库中实现两张表之间的关系建立,在数据库中实现多对多要靠中间表,中间表只能出现两表的主键 第三步:在实体类中描述出两个实体之间的关系, 建立多对多实体类,两个实体类分别提供对方实体类set集合的引用 建立一对多实体类,当中间表有其他字段时以一对多方式建立实体类 第四步:在映射配置文件中建立两个实体和两张表之间的关系...

离开屏幕的光,哪盏灯照亮你的孤独? 230

框架漫谈之hibernate(四)hibernate一对多、多对多实体类xml配置

数据库建表SQL 客户联系人一对多 用户角色多对多

ZhuPengWei_ 1487

在Hibernate中实现复杂的数据映射

在前一篇文章《使用Hibernate来操作持久对象》中,介绍了Hibernate的基本概念,然后用实例演示了怎么在Web应用中使用Hibernate来封装持久数据对象。然而在现实的项目中,我们往往需要操作多个数据表,并且多个表之间往往存在复杂的关系,在本文,将介绍怎么在Hibernate中描述多个表的映射关系,并且演示怎么操作关系复杂的持久对象。阅读本文前您需要以下的知识和工具:

495

SSH框架之hibernate《三》

Hibernate03     一、多表设计         1.1多表设计的总则             问题:我们为什么要学习多表映射?             答:                 在实际开发中,我们数据库的表难免会有相互的关联关系,在操作表的时候就有可能会涉及到多张表的操作。试想一下,如果把我们web阶段的在线商城案例的持久层改为hibernate的实现,我们现在根本无法实...

第二颗大白菜 2515

Hibernate继承映射之二_用多张表映射1

【回顾】Hibernate继承映射之一_用一张表映射 这次给大家带来的是继承映射的第二种方法:用多张表映射,每张表只有自己独立的信息,没有公共字段! 映射情景回顾以及各实体类在这里就不重复写了,需要的都在:http://blog.youkuaiyun.com/nthack5730/article/details/45366983 【因为除了映射文件改变而已】 映射文件,这次只有一个:A

机智猫 1万+

SSH框架之hibernate《四》

hibernate第四天 一、JPA相关概念 1.1JPA概述 全称是:Java Persistence API。是sun公司推出的一套基于ORM的规范。hibernate框架中提供了JPA的实现。 JPA痛JDK5.0注解或xml描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库...

weixin_34080951的博客 177

Struts2一对多配置

在多表映射配置时,我们应该遵循以下不步骤: 确定两张表之间的关系 在数据库中实现两张表之间的关系建立 在实体类中描述出两个实体类之间的关系 在映射配置文件中建立两个实体和两张表之间的关系 我们就按照上面的步骤做,我这里有一张联系人表和一张客户表,一对多关系,实体类代码如下: /** * 客户的实体类 * @author dengg * */ public class Customer ...

qq_41683305的博客 406
上一篇: Hibernate中一对多的映射关系实例
下一篇: 两表左连接,统计第二张表中的个数(many-to-one)
AngleKill
博客等级 码龄18年 20粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值