hibernate 实现多表连接查询(简单介绍)

Hibernate学习笔记 多表映射 前面说了Hibernate的单表映射,由于是实体类和数据表之间一对一的映射,所以比较简单。现在就来说说多表映射,这需要涉及到多个实体类和数据表之间的关系。因此稍微复杂一点。建立实体类我建立了两个实体类,一个作者类,一个文章类,其他方法都忽略了,就留下了注解。作者类如下:@Entity public class Author { @Id @GeneratedValue(strategy 阅读详情

Hibernate主要支持两种查询方式:HQL查询和Criteria查询。前者应用较为广泛,后者也只是调用封装好的接口。

现在有一个问题,就是实现多表连接查询,且查询结果集不与任何一个实体类对应,怎么解决呢?

举个例子:

现在有两个表,一个users用户表, 一个goods商品表,每个用户可以有多个商品,而一个商品只能对应一个用户。

users表中的字段:userId,userName,telephone,address

goods表中的字段:goodsId,goodsName,userId

现在要实现两表连接查询,查出每个用户所拥有的商品,并把该用户的信息和其商品信息显示出来。

使用Hibernate反向生成的实体类分别是Users和Goods。

有两种方式:

(1)使用传统方式:

String hql=”select u.userName, u.telephone, u.address, g.goodsName from Users u, Goods g where u.userId=g.userId”;

根据这个查询语句,调用query.list()方法得到一个List值,这个List中的每一个值都是Object[]类型的,里面包含了查询出来的所有值,剩下的自个儿去处理就行了

(2)增加一个映射类

增加一个映射类UsersVoGoods.java,添加需要查询的信息相关的所有属性,本例中添加userName, telephone, address, goodsName。并为这几个属性添加setter和getter方法,增加构造函数,参数与这四个属性对应,那么可以用hql查询方式:

String hql = “select new com.test.UsersVoGoods(u.userName, u.teltphone, u.address, g.goodsName) from Users u, Goods g where u.userId=g.userId”;

query.list()的返回值List中的值都是UsersVoGoods型的,直接使用get()就能获取。

其实不增加映射类也是可以的,只需要在Users.java实体类里增加一个构造函数,函数参数还是需要的所有字段,并为这些参数中Users实体原来没有的字段添加属性和getter() setter()即可。

使用Hibernate进行多表关联查询的Java开发指南 最后,我们使用Hibernate的查询语言执行了多表关联查询,并输出了结果。在Hibernate的配置文件(通常为hibernate.cfg.xml)中,确保您已正确配置了数据库连接和实体类的映射。一旦我们完成了Hibernate的配置和实体类的定义,就可以使用Hibernate执行多表关联查询了。现在,我们已经完成了Hibernate的配置、实体类的定义和多表关联查询的代码编写。请确保在运行代码之前,您已经正确配置了Hibernate和数据库连接,并且数据库中存在相应的表和数据。注解表示主键的生成策略。 阅读详情

相关推荐

Java 里 Hibernate 的多表关联查询优化

在 Java 开发中,Hibernate 是一个广泛使用的对象关系映射(ORM)框架,它简化了数据库操作,使开发者可以通过操作对象来间接操作数据库。然而,在实际应用中,多表关联查询是常见的需求,若处理不当,会导致查询性能低下,影响系统的响应速度和整体性能。本文的目的就是深入探讨 Hibernate 多表关联查询的优化方法,范围涵盖从基本概念到实际应用,从算法原理到代码实现的各个方面,帮助开发者掌握优化技巧,提高查询效率。

Java大师兄的博客 906

hibernate 实现多表连接查询

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

weixin_33755557的博客 936

hibernate多表联合查询

hibernate多表联合查询实例,很经典的查询语句和总结.

Hibernate 多表联查

@ManyToOne ManyToOne 表示为此实体多对一,如学生对老师 使用@ManyToOne-----关联非主键列 @ManyToOne(cascade = CascadeType.MERGE) @JoinColumn(name="CASECODE", referencedColumnName="CASENO") private CaseInfoModel caseInfo; CASECODE 表示当前实体类对应数据库表中的列名称。 CASENO 表示关联

Memory166的博客 1548

visual studio 2017编译Triangle库遇到的问题和解决办法

这段时间因为一个项目需要使用到Triangle这个三角剖分工具,需要在windows环境下进行对源码编译,中间踩了很多坑,特此记录下。 1、下载 下载链接是下边这个,需要翻墙 http://www.cs.cmu.edu/~quake/triangle.html 2、编译。。超。。。级。。。麻。。。烦。。。 在ubutu下安装一切顺利,完全没遇到什么麻烦,但是换到windows下就麻烦不断...

csubai07的博客 2439

PostGIS 小白入门详细指南

PostGIS 是 PostgreSQL 的一个扩展,它将 PostgreSQL 转变为一个功能强大的空间数据库,使其能够存储、查询和分析地理空间数据。PostGIS 遵循开放地理空间联盟(OGC)的标准,支持各种空间数据类型和操作,如点、线、多边形、缓冲区、空间连接等。存储各种空间数据类型(如几何类型和地理类型)空间索引,提高查询性能丰富的空间函数和操作支持投影和坐标系统转换城市规划与管理环境监测与分析物流与运输优化地图制作与可视化位置服务与导航。

落魄书生的职业学习生涯 1万+

Hibernate中的HQL查询方式详解

Hibernate中的HQL查询方式详解 1、HQL的简单查询 测试代码: package com.pipi.hibernate04; import myutils.HibernateUtil; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import java.util.List; // HQL简单查询,没有条件的查询 public class Test03_H

pipizhen_的博客 632

台达B3伺服电机485通讯的调试过程

最近上了一项目,没办法直接把B3伺服接到PLC上去,怎么办?偶说试下直接电脑通过100多米的485线控制好了,定型前的测试就这样展开了。 1、焊CN1口 如果不安装CN1,是开不了机的,要报很多错误,比如SERV EMG ALERT, 上限报警,下限报警什么的,怎么办?直接焊好CN1头子吧,烦了点,但是必要的。 主要接的是11,9,10,32,31,30几个脚,按照图上连接好就是了。 2、 接线路 按照上面的图,接上伺服电机线,编码器线,电源线,包括限位常闭开关、485连线等,就完..

shidong01的博客 1万+

hql关联和连接查询实例

Hibernate提供了强大的查询系统,使用Hibernate有多种查询方法可以选择:可以使用Hibernate的HQL查询,也可以使用条件查询,甚至可以使用原生的SQL查询语句。其中HQL查询时Hibernate配置的功能强大的查询语句。HQL是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态 和关联之类的概念。        下面我们来看一下

晨曦的专栏 2万+

避坑指南:Quectel EC200A-CN在OpenWrt或嵌入式Linux下的RNDIS/ECM网络配置全解析

本文详细解析了Quectel EC200A-CN模块在OpenWrt或嵌入式Linux下的RNDIS/ECM网络配置,包括模式选择、内核配置、动态切换AT指令、网络接口生成与排错、路由与防火墙设置、性能调优及特殊场景应对策略,帮助开发者避免常见配置陷阱,提升网络稳定性和效率。

weixin_42531588的博客 287

ComfyUI工作流换脸节点报错ReActorFaceSwap

找到自己ComfyUI安装目录的custom_nodes下是否有这个comfyui-reactor-node-main。大家在借鉴别人工作流进行AI换脸的时候,如果遇到ReActorFaceSwap报错提示,莫慌,看我的,两步解决问题。这里千万注意不要嵌套文件夹,保证点击去这个文件就可以看到内置的配置文件!找到自己ComfyUI安装目录的facerestore_models。如果有这个文件,直接跳过,去下一步。如果没有,可以去Git官网下载。

qq_70810809的博客 9015

Hibernate详解HQL_QBL查询

Hibernate的查询方式 Hibernate提供了5种查询方式: 1.OID查询 根据对象OID(主键)进行检索,使用get方法;使用load方法。 2.对象导航查询 根据一个已查询到的对象,获得关联对象。 LinkMan linkMan = session.get(LinkMan.class, 1l); Customer customer = linkMan.getCustom...

malaganguo的博客 440

cadence数模混合仿真反标sdf

数模混合IC设计时经常要调用一些Verilog模块(最简单的例如SPI接口),在前仿时一般直接用rtl代码来仿真,但是后仿时要关注因寄生带来的延迟,避免这些额外的延迟导致时序错误,因此不能简单地采用RTL来仿真。 一般有两种办法:1是采用由RTL综合得到的门级电路来仿真,这种方法比较简单,但是缺点是规模较大,而且只包括门延迟不包括因版图导致的线延迟;如果想要仿真更精细,就要对该这部分门电路提取寄生参数; 另一种方式是利用sdf文件(standard delay format)来进行仿真。后端工具在布局布

长河柱天的博客 7274

java hibernate 查询_JavaWeb学习:Hibernate查询方式

Hibernate查询方式:一、OID查询Hibernate根据对象的OID(主键)进行检索①、get方法:Customer customer=session.get(Customer.class,1l);②、load方法:Customer customer=session.load(Customer.class,1l);二、对象导航检索Hibernate根据一个已经查询到的对象,获得其关联的对象...

weixin_35924765的博客 210

Android日志实战——Tombstones日志分析(七)

Tombstones 一般是由 Dalvik 错误、状态监视调试器、C 层代码以及 libc 的一些问题导致的。当系统发生 Tombstone 的时候,内核(kernel)首先会上报一个严重的警告信号(signal),上层接收到之后,进程的调试工具会把进程中当时的调用栈现场保存起来,并在系统创建了 data/tombstones 目录后把异常时的进程信息写在此目录里面,开发者需要通过调用栈来分析整个调用流程来找出出问题的点。Tombstone原因分析pid 与 tid 相同,问题出在主线程。

小旭的专栏 2522

为YOLOv11引入自适应特征融合模块(ASFF)

本文探讨了在YOLOv11中引入ASFF(自适应空间特征融合)模块以解决多尺度目标检测性能不均衡的问题。作者分析了传统FPN固定融合策略的缺陷,详细介绍了ASFF模块的实现原理,包括动态权重生成网络设计和特征融合机制。通过将ASFF集成到YOLOv11颈部网络,实现了特征在双向流动时的自适应融合,在复杂场景下mAP提升1.2%而推理时间仅增加3-5ms。文章还分享了训练调参技巧和部署注意事项,指出ASFF特别适合交通监控等目标尺度变化大的场景,但强调需根据实际需求平衡模型复杂度与性能。最后提供了工程实践建议

as1225120794的博客 320

Hibernate的查询方式(大全)(检索方式)OID查询+ HQL检索 +QBC检索+SQL检索

JVM,JAVA集合,JAVA多线程并发,JAVA基础,Spring原理,微服务,Netty与RPC,网络,日志,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,设计模式,负载均衡,数据库,一致性哈希,JAVA算法,数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算…《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!//降序。

2401_84048225的博客 1157

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

八、hibernate的查询(HQL)

HQL:Hibernate Query Language 提供更加丰富灵活、更为强大的查询能力 HQL更接近SQL语句查询语法 面向对象的查询 "from Children where cid<?"  :这里Children指的是类不是children表;cid指的是Children类中的对象而不是children表中的字段 HQL查询(单表) 以一...

W5952322的博客 193

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Hibernate入门第十三讲——Hibernate中的多表查询

Hibernate中的多表操作在实际开发中,我们不可能只是简简单单地去操作单表,绝大部分都是要对多表进行操作的。所以本文就来讲述Hibernate中的多表操作,讲之前,先复习一下使用SQL语句是如何进行多表操作的。提示:本文所有案例代码的编写都是建立在前文Hibernate检索方式概述的案例基础之上的!!!SQL多表操作SQL多表操作可分为如下几类: 交叉连接(CROSS JOIN) 交叉连接其实

李阿昀的博客 4412

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Hibernate多表查询

JAVAZHICHIZHE的专栏 1万+

hibernate实现多表联合查询

hibernate实现多表联合查询 转自:http://blog.sina.com.cn/s/blog_67b9ad8d01010by1.html 以前用sql实现联合查询 是非常简单的事,只需要写sql语句就可以,第一次遇到hibernate要实现多表联合查询的时候还楞了一下。最后看了下资料,才恍然大悟,hibernate实现多表联合查询跟SQL没多大差别。 hibernate很多实现都是靠...

u014303506的博客 2051

Hibernate Criteria查询之多表连接分页

最近尝试用Hibernate的Criteria查询实现多表连接下的分页,发现一些Hibernate的奇怪问题:多表连接后的分页求总条数始终报错,检查生成的sql也不正确。研究许久找到问题所在,特贴如下: Mysql脚本如下: 学生 测试数据,请勿见笑:) [sql] view plain copy /*   Navicat MySQL Data Transfer      Sourc...

qq_40285302的博客 1891

hibernate 实现多表连接查询 查询结果映射到自定义类中

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

3771

Hibernate对多表关联查询

由于公司项目的需要,我对Hibernate对多表关联查询研究了一下,现总结如下,供朋友参考。一、 Hibernate简介Hibernate是一个JDO工具。它的工作原理是通过文件(一般有两种:xml文件和properties文件)把值对象和数据库表之间建立起一个映射关系。这样,我们只需要通过操作这些值对象和Hibernate提供的一些基本类,就可以达到使用数据库的目的。例如,使用Hiber

泡菜 1769

【Hibernate】Hibernate的多表查询

在《【Hibernate】Hibernate的聚类查询、分组查询、排序与时间之差》(点击打开链接)一文中已经讲述过如何利用HQL语句取代SQL语句,进行聚类查询、分组查询、排序与时间之差的查询,同时指出hql能代替sql语句做任何事情。我原本以为hql语句的多表查询,要先对里面的实体做Java与xml的修改,其实并不需要,同样是一句HQL语句就能搞定的事情。SQL的多表查询已经在《【Mysql】利...

ryelqy的博客 737
上一篇: hibernate访问postgreSQL的搭建过程
下一篇: HQL之多表查询(一对多和多对多)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值