hibernate将普通查询的sql结果集转成对象列表

HQL面向对象查询原理与实战:告别SQL拼接 HQL(Hibernate Query Language)是一种面向对象的查询语言,核心在于将数据库操作从‘表和字段’抽象为‘实体与属性’,依托Hibernate元数据模型实现对象-关系映射。其设计原理基于领域驱动思想,通过编译期语义校验、运行时导航关联、延迟加载机制及数据库方言适配,保障查询逻辑与物理存储解耦。技术价值体现在类型安全、跨库兼容、缓存一致性与开发效率提升;典型应用场景包括企业级ORM集成、多数据库迁移、复杂业务聚合查询及微服务数据访问层构建。本文深入解析HQL如何以Java对象为中心重构查询 阅读详情

在ssh2开发中遇到,数据库中并没有设置表的外键关系,用hibernate的hql就不能达到关联查询的效果。

现在只能写sql关联,再写代码把结果集转成对象列表 。

现在用     SQLQuery.addEntity()方法可以实现hibernate自动把结果集转成对象列表。


StringBuffer sql = new StringBuffer();

        
        sql.append("SELECT a.* FROM T_MB_Account a ");
        sql.append("LEFT JOIN t_user_users u ON u.ID=a.UserID ");
        sql.append("WHERE 1=1 ");
        if(accountName.length()>0 && userName.length()==0){
            sql.append("and a.accountName like '%").append(accountName).append("%'");
        }else if(accountName.length()==0 && userName.length()>0){
            sql.append("and u.name like '%").append(userName).append("%'");
        }else if(accountName.length()>0 && userName.length()>0){
            sql.append("and (a.accountName like '%").append(accountName).append("%'");
            sql.append("or u.name like '%").append(userName).append("%'").append(")");
        }
        sql.append(" order by a.accountId");
        
        SQLQuery sQLQuery = session.createSQLQuery(sql.toString());
        sQLQuery.setFirstResult(firstResult);
        sQLQuery.setMaxResults(maxResults);
        
        //把sql的查询结果 插入到对象----list<Object[]>形式存储
        sQLQuery.addEntity("a", TMbAccount.class);
        

        List<TMbAccount> lst = sQLQuery.list();



     sQLQuery.addEntity("a", TMbAccount.class);是关键,TMbAccount是要转换的对象,当然TMbAccount的映射也是要配置好的

HQL入门与实战:面向对象的Hibernate查询语言 HQL(Hibernate Query Language)是一种面向Java实体类的ORM查询语言,其核心原理是将开发者对领域对象的操作自动翻译为适配不同数据库的原生SQL。相比传统SQL,HQL提供编译期类型安全、数据库无关性及延迟加载集成等技术价值,显著降低DAO层维护成本。它适用于以CRUD为主、强调可维护性的企业级Java应用,尤其在Spring Boot + JPA技术栈中承担着统一数据访问语义的关键角色。本文围绕HQL语法规范、命名参数绑定、JOIN FETCH优化及常见性能陷阱展开,覆盖从基础 阅读详情

相关推荐

JPA Native Query(本地查询)及查询结果转换

Native Query ,本地查询, 是直接使用SQL语句进行查询,使用本地查询可以不需要查询整张表的字段, 而根据需要进行查询, 那么如何将查询的结果转换成需要的对象类型呢?

oscar999的专栏 6364

关于hibernate从数据库中获得pojo值的一些小细节

原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口。下面来描述如何使用这个API进行查询。标量查询(Scalar queries)最基本的SQL查询就是获得一个标量(数值)的列表。sess.createSQLQuery("SELECT * FROM CATS").list();sess.createSQLQuery("SE

zhou2003737的专栏 1024

IP白名单校验

支持格式: 1、127.0.0.1 // 指定固定IP 2、127.0.0.1-127.0.0.128 // 可使用“-”来表示一个IP区间,支持跨IP段(一般不会出现这种情况,跨IP段则配置多个规则) 3、127.0.* // 2~4位IP段可...

2199

Hibernate查询时用HQL动态创建对象

当你在实际的开发过程中,有时候查询的结果只是需要查询一张表中的一部分数据,而不是所有的数据,比如说,我现在有一个需求是这样的:我只需要user的id和name这两个属性的数据,其他的数据暂时不需要,那么这时候如果按照原来(假设原来user表中数据包括:userId,userName,teleNum,email等等的个人信息)的对象直接将整个对象全部获取到,这是牺牲性能作为代价的,一个user的时候

王洋的专栏 8170

VSCode关联VIVADO编辑Verilog

有时候接手别人的代码,或者从网上找的开源代码,每个人风格不一致,对齐缩进也不一样,阅读起来很累。有没有什么方法能快捷地格式化代码呢。下面我们利用VSCode插件来实现这个需求。Vivado是Xilinx公司提供的逻辑开发平台(之一),如果不喜欢Vivado自带的文本编辑器,可以选择第三方的文本编辑器VSCode。

小王在努力...的博客 7150

在Visual Studio中搭建Dynamo Python开发环境,效率飞一般的增长

在Visual Studio中搭建Dynamo Python开发环境,效率飞一般的增长

BIM的乐趣 1730

hibernate jar包_Hibernate【入门篇】

1. Hibernate 概述1.1. Hibernate 是什么百度百科:Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既...

weixin_39643338的博客 328

产品必备技能(十):如何绘制原型图?先要绘制页面流程图+页面原型图!附实操原型图、流程图实例(抖音)

文章目录目标题目实操步骤模板实操【抖音】APP的视频发布功能页面流程绘制页面流程图合格标准绘制页面原型图合格标准 目标 新入行的产品经理都对原型抱有向往的心境,但是有经验的产品经理不会一上来就画原型,而是先画页面流程再来画原型。通过学习,你将学会如何用页面流程图规划用户行为路径、如何借助原型识别问题、减少风险、有效沟通。 题目 任意选择一款你喜欢的产品,体验某个功能,下载并梳理此功能至少5个以上的页面流程跳转点(后面会解释),还原2 - 3个主要界面的低保真原型图。 实操步骤 可使用手绘以及Process

汪雯琦的博客 4842

Hibernate根据查询内容封装成对象(DTO)

List list=session.createQuery("select new dto.SpacesDTO(s.id, s.num, s.state, s.type, o.name) from Spaces s inner join s.owner o").list(); SpacesDTO属性必须和查询信息一致 (s.id, s.num, s.state, s.type, o.na

wwwcomcn123的专栏 3768

Maven

是一款自动化构建工具,专注于Java项目的构建、依赖的管理。

weixin_58738870的博客 2163

推荐系统(十六):基于ESMM的商品召回/推荐系统

ESMM(Entire Space Multi-Task Model)是阿里巴巴提出的多任务学习框架,通过联合建模点击率(CTR)和点击转化率(CVR)解决传统CVR模型样本稀疏问题。其核心思想是将 CVR 定义为 CTR 与 CTCVR 的条件概率,模型包含两个子任务。

Jin_Kwok的博客 1265

Hibernate中SQL标量查询、实体查询

Hibernate:SQL查询中 标量查询和试题查询

VipMao的博客 2370

手把手教你学Simulink--H桥逆变器的PWM控制设计与仿真

本文详细介绍了如何在Simulink环境中设计和仿真一个基于PWM控制的H桥逆变器。H桥逆变器广泛应用于电机驱动、UPS和可再生能源系统等领域,通过PWM技术可以有效控制输出电压的幅度和频率,减少谐波失真,提高系统效率和稳定性。文章首先介绍了所需的工具和环境,包括MATLAB/Simulink和SimscapeElectrical工具箱。接着,详细阐述了从定义任务需求、创建Simulink项目、建立基础电气模型、集成传感器模型、实现PWM控制算法到设置仿真参数和运行仿真的完整步骤。最后,文章总结了通过Sim

MHD0815的博客 718

Hibernate的HQL简单查询语句

前言       不管数据库用的是什么类型,对于查询语句来说,我们总是习惯了SQL语句。它之所以能够屹立不倒,一方面已成为了习惯,一方面确实功能强大。Hibernate相对于其他ORM实现来说,数据查询是它独特的亮点。它所提供的HQL,类似于SQL语句,但是却比SQL语句灵活。它跟SQL语句有很多相似的地方,是因为这样的话更容易被接受。   HQL查询   简单属性查询      ...

Coder Yasmine 3078

DeepSeek如何构建可扩展的 AI 驱动交易系统,基于 MetaTrader 5 与 Python 利用先进的数据处理、机器学习和容器化部署来优化算法交易。

MT5 Python API 架构设计分为三层:通信层:利用异步消息传递(例如 ZeroMQ 或标准套接字编程)支持每秒数万个数据请求。转换层: C++ 动态库有效地将 MT5 命令转换为 Python 对象(反之亦然),从而优化速度和内存使用率。接口层:提供Pythonic API,封装了所有终端功能,包括:1)实时价格订阅(滴答或秒级更新)2)历史数据检索(从M1到更高的时间范围)3)订单流监控(交易详情和市场深度)4)策略执行引擎(用于算法交易)

iCloudEnd的博客 1382

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Hibernate框架,查询所有记录

Hibernate框架api,查询所有记录操作 一、Query对象 1.使用query对象,不需要写SQL语句,但是写HQL语句 (1)HQL(Hibernate Query Language):提供查询语言,HQL语句和普通sql很相似 (2)hql和sql语句的区别: -使用sql操作表和表字段 -使用hql操作实体类和属性 2.查询所有记录的hql语句: (1) from 实体类名称 3.Q...

秒怂_z 260

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Hibernate学习之---SQL查询

SQL查询是通过SQLQuery接口来表示的。SQLQuery接口是Query接口的子接口,因此完全可以调用Query接口的方法。执行SQL查询的步骤是: 获取Hibernate Session对象。 编写SQL语句。 以SQL语句作为参数,调用Session的createSQLQuery()方法创建查询对象。 调用SQLQuery对象的addScalar()或addEntity()方法将选出的结果

StrongHYQ的博客 1108

温度PID控制PLC程序

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

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

hibernate的addEntity的用法,普通sql查询得到对象list

public List getListByTechId(int techId){ String sql = "select * from t_sys_class where id in (select classid from t_tech_teaclass where teacherid = ?)"; SQLQuery query = this.getSession().createSQLQ

x532716636的专栏 646

如何使用hibernate执行sql语句

org.hibernate.Session //查询列表 public List getlist(String sql) {      Session session=getHibernateTemplate().getSessionFactory().openSession();   return session.createSQLQuery(hql).list(); } //下面是分页:

随便起个不重复的名字 6596

Hibernate的HQL语句书写查询到的是bean对象还是Object对象

HQL语句编写的方式 - 个人见解,有错请指出,共同进步。1.SimpleHibernateDao.java类public class SimpleHibernateDao<T, PK extends Serializable> { /** * 根据查询HQL与参数列表创建Query对象. * * 本类封装的find()函数全部默认返回对象类型为T,当不为T时

Hunter的专栏 1461

Hibernate复习之Hibernate 查询方式

今日目录:        1、Hibernate 查询方式简介        2、本地 SQL 查询方式        3、HQL 查询方式        4、QBC 查询方式   一、Hibernate 查询方式简介        1、导航对象图查询方式;               原理:根据已经加载的对象导航到其他对象;               例如:根据Id查询到某个...

Java学习之乐的博客 290

10.3 hibernate_查询方式(QBC查询、本地SQL查询)

QBC检索 QBC查询就是通过使用Hibernate提供的Query By Criteria API来查询对象,这种API封装了SQL语句的动态拼装,对查询提供了更加面向对象的功能接口 HQL所能做的事情,使用QBC也大多能做用,这个通过实例来看看QBC是如何使用的。   步骤: 获得session创建criteria对象:session.createCriteria(Obej

yiguang_820的博客 334

Hibernate(11)- 查询方式(2)

一.QBC检索 1.概念 QBC查询就是通过使用Hibernate提供的Query By Criteria API来查询对象,这种API封装了SQL语句的动态拼装,对查询提供了更加面向对象的功能接口 2.步骤 HQL所能做的事情,使用QBC也大多能做用,这个通过实例来看看QBC是如何使用的。   步骤: 获得session 创建criteria对象:session.createCrit...

yiguang_820的博客 155

Hibernate优化查询策略

有很多人认为Hibernate天生效率比较低,确实,在普遍情况下,需要将执行转换为SQL语句的Hibernate的效率低于直接JDBC存取,然 而,在经过比较好的性能优化之后,Hibernate的性能还是让人相当满意的,特别是应用二级缓存之后,甚至可以获得比较不使用缓存的JDBC更好的性 能,下面介绍一些通常的Hibernate的优化策略: 1.抓取优化 抓取是指Hiberna

a506690的专栏 4665

Hibernate将HQL语句转换成SQL语句

Hibernate已经是不单单是ORM框架了,从Hibernate的社区就能看到其发展前景了。其在Java开发中很是常见. 其特有的HQL语句还是Java开发者必备技能。但是有时间HQL不是很好用或者不确定其转换后的SQL语句形式。亦或 只是为了偷懒,比如利用一条语句完成结果集检索和数量统计。需要将HQL语句转换成SQL语句! Hibernate本身就提供了其实现类,只是知道的人并不

疯狂的芒果 1万+
上一篇: Hibernate 原生sql的执行
下一篇: javascript 弹出子窗口
墨桐
博客等级 码龄16年 7粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值