Hibernate用Sql查询封装到实体类

Hql查询语句可以自动封装到实体类中,但是sql语句需要用到方法才可以

 1     @Override
 2     @SuppressWarnings("unchecked")
 3     public <T> Pagination<T> getPageResultObjectParamsBySql(Class<T> clazz,
 4  String hql, int pageNo, int pageSize,
 5             Object[] param)
 6             throws RuntimeException {
 7         List<T> list = null;
 8         Pagination<T> page;
 9         try {
10             Session session = getSession();
11             log.info("[执行HQL:{}]", hql);
12             Query query = session.createSQLQuery(hql).addEntity(clazz);//重点在这块,把要转换的类加进去,返回数据的时候会自动转换成这个类的对象;
13             buildParam(query, param);
14             list = query.setFirstResult((pageNo - 1) * pageSize)
15                     .setMaxResults(pageSize).list();
16             page = new Pagination<T>(list, pageNo, pageSize);
17         } catch (RuntimeException e) {
18             log.error("[执行basedao#{}出错:{}]", "getPageResult", e.getMessage());
19             throw e;
20         }
21         return page;
22     }

另外:.addScalar(columnAlias, type)这个方法,也可以在统计的时候发挥作用,暂时现在还不了解,以后待补充!

时间: 2025-01-22 10:20:53

Hibernate用Sql查询封装到实体类的相关文章

hibernate sql查询转化为实体类

在多表查询的时候使用hibernate的sql查询的时候,一般返回的是object[]数组,或者可以使用 session.createSQLQuery(sql).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); 来转化为map来进行处理,可以通过以下方式将查询结果转化为实体类: 1,sql语句 String sql="select s.id as id,s.classname as classname from grade s,stu

Hibernate应用SQL查询返回实体类型

Hibernate应用SQL查询返回实体类型 Hibernate使用SQL查询返回实体类型 以前,使用SQL查询,结果放在 RS 结果集中,还要去转换影射到Java类中.Hibernate中,可以自动帮我们注入到Hibernate 甚至是 非 Hibernate 类型当中. String sql = "select * from T_TMP_PUBLIC_POLICY TP"; SQLQuery sqluery = session.createSQLQuery(sql).addEnti

Hibernate之SQL查询

Hibernate支持使用原生的SQL语句进行查询.使用原生的SQL的好处是:可以利用某些数据库的特性(不同的数据库SQL 语法会有所差异), 将原有的使用JDBC作为持久层技术的应用 ,迁移到使用Hibernate作为持久层技术. 我们知道 使用HQL查询 主要牵涉的是 Query接口,而使用SQL查询 主要牵涉的 是 SQLQuery接口  . 而SQLQuery接口 是 Query接口的子接口. 所以 Query接口中的方法 ,均可以在SQLQuery接口中使用 ,SQLQuery接口还多

使用hibernate原生sql查询,结果集全为1的问题解决

问题如下: String sqlTest ="select summary,summaryno from F_Summary"; List<Map<Object, Object>> listTest = this.getService().getListBySql(sqlTest); for (Map<Object, Object> m : listTest) { for (Object k : m.keySet()) { System.out.pr

Hibernate原生SQL查询多表关联,SQL语句要注意的问题

Hibernate原生SQL查询多表关联,SQL语句要注意的问题 @for&ever 2009-9-4 系统环境: MySQL5.1 Hibernate3.3 有如下的假定: 实体类 Question 和 Answer分别对应数据表 question 和answer. 并且表 question 和answer 的字段大部分都一样,字段数目也一样. 执行如下的操作: 1> 使用hibernate 使用原生SQL查询, Query q = session.createSQLQuery(sql).

在线数据库表(sql语句)生成java实体类工具

相信每个做java开发的读者,都接触过SQL建表语句,尤其是在项目开发初期,因为数据库是项目的基石. 在现代项目开发中,出现了许多ORM框架,通过简单的实体映射,即可实现与数据库的交互,然而我们最初设计的一定是数据库表结构,而不是实体类.实体类仅仅是对底层数据结构的有损压缩,它仅仅是数据载体,不具备数据归档能力. 因此,很多时候,我们需要将原始的SQL建表语句转换成java实体类,这项工作看似简单,但若人工完成,工作量也是相当可观的,而且难免会出现差错. 到目前为止,笔者还没有发现比较靠谱的此类

在线数据库表(sql语句)生成java实体类工具 - 参考手册

SQL建表语句 说明 格式良好的SQL建表语句,可以是直接从PowerDesigner.Navicat等工具中导出SQL建表语句.所谓格式良好,是指建表指令与表名必须在一行,字段名称.类型.注释必须在一行,因为这个工具是用正则实现的,并不是语法解析器,当然,以后有时间的话,会改进成解析器. 举例 -- ---------------------------- -- Table structure for t_activity -- ---------------------------- DRO

CodeSmith生成SQL Server视图的实体类脚本/对应的生成模板

C#生成sql视图的实体类 using System;using System.Text;using CodeSmith.Engine;using SchemaExplorer;using System.ComponentModel;using System.Data; namespace Common.Data{ /// <summary> /// CodeSmith生成SQL Server视图的实体类脚本 /// </summary> public class ViewUtil

关于用Hibernate执行sql查询,字符字段类型只返回第一个字节的问题

关于用Hibernate执行sql查询,字符字段类型只返回第一个字节的问题 今天遇到了一个问题,就是在Hibernate中,我用sql去查询mysql数据库里面的user表里面的username字段,但是发现查出来的数据都是只有第一个字,例如:在user表里面的username字段中有一条数据是:"Chen chiwei",查询后返回的结果却是这条数据的第一个字母:"C":于是乎,我查了一下user这张表的设计,发现username这个字段的类型是'char'类型,