Hibernate里使用SQLQuery

最近在做一个老旧项目,项目后台使用了hibernate。以前虽说也用过hibernate,但用得不够深入,一般最多两个表关联查询一下,比较简单。

但今天在项目有一个需求,要求5个表进行关联查询,这样hibernate试了很久,发现还是搞不定。于是尝试在hibernate里直接使用SQL。在这个地方遇到了坑,卡了很久。最终解决了问题,这里记录一下。

Hibernate里使用SQL

StringBuilder sql = new StringBuilder();
//这里开始拼装sql语句
//创建SQLQuery对象
SQLQuery sqlQuery = getSession().createSQLQuery(sql.toString());
//调用addScalar, 说明取结果集里的哪些字段, 字段被映射为哪种类型
sqlQuery.addScalar("column1", Hibernate.LONG);
sqlQuery.addScalar("column2", Hibernate.STRING);
sqlQuery.addScalar("column3", Hibernate.STRING);
//设置取的结果集行数
sqlQuery.setFirstResult(...);
sqlQuery.setMaxResults(...);
//设置将对象转化为Cto对象, 注意Cto对象的各属性类型要与addScalar里指明的一致
sqlQuery.setResultTransformer(Transformers.aliasToBean(TestCto.class));
//返回TestCto的List列表
return sqlQuery.list();

上述代码中的说明很详细了,就不解释了。

总结

hibernate里使用SQL真心很累,还是MyBatis大法好。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏pangguoming

Hibernate详细教程

一、搭建Hibernate环境 1.在src目录下创建hibernate.cfg.xml配置文件 PS:文件的名字不能改! <?xml version="1.0...

44950
来自专栏码匠的流水账

聊聊storm-kafka-client的ProcessingGuarantee

本文主要研究一下storm-kafka-client的ProcessingGuarantee

46720
来自专栏爱撒谎的男孩

地址管理之省市区三级联动菜单

1.1K30
来自专栏岑玉海

RavenDb学习(八)高级特性上半部分

1、事务支持 别的关系型数据库和RavenDb一起使用 using (var transaction = new TransactionScope()) { ...

29660
来自专栏Java Web

初学Java Web(9)——学生管理系统(简易版)总结

项目开始时间:2018年4月8日14:37:47 项目完成时间:2018年4月9日10:03:30 技术准备 这个项目是自己用于巩固 J2EE 相关知识的练...

68850
来自专栏一名合格java开发的自我修养

jdbc操作根据bean类自动组装sql,天啦,我感觉我实现了hibernate

场景:需要将从ODPS数仓中计算得到的大额可疑交易信息导入到业务系统的mysql中供业务系统审核。但是本系统是开放是为了产品化,要保证不同环境的可移植性,同时同...

20920
来自专栏Pythonista

Django之ORM数据库

            django默认使用sqlite的数据库,默认自带sqlite的数据库驱动 , 引擎名称:django.db.backends.sqli...

15710
来自专栏数据之美

MapReduce 计数器简介

1、计数器简介 在许多情况下,一个用户需要了解待分析的数据,尽管这并非所要执行的分析任务 的核心内容。以统计数据集中无效记录数目的任务为例,如果发现无效...

33490
来自专栏腾讯玄武实验室的专栏

IE 浏览器 DOM 树结构概览(下)

DOM (Document Object Model)作为现代浏览器的基础,其设计和实现方式影响着整个浏览器的表现。对安全研究者而言,了解 DOM 的结构更是有...

54300
来自专栏跟着阿笨一起玩NET

C#常用操作类库二(ini配置文件读写)

19910

扫码关注云+社区

领取腾讯云代金券