数据库:
oracle
测试的有问题的版本:
hibernate 3.6.0.Final
hibernate 4.2.0.Final
如果用的库如mysql 也不会有问题。
代码:
SQLQuery q = session.createSQLQuery("select name from tbl_user"); q.setFirstResult(N); q.setMaxResults(3); System.out.println(q.list());
如果q.setFirstResult(0); 取第一页没问题,生成的sql如下所示:
Hibernate: select * from ( select name from tbl_user ) where rownum <= ? [null, 2, null]
此时没问题。
如果q.setFirstResult(1); 取第一页没问题,生成的sql及打印的结果如下所示:
Hibernate: select * from ( select row_.*, rownum rownum_ from ( select name from tbl_user ) row_ where rownum <= ? ) where rownum_ > ? [[Ljava.lang.Object;@1e6d4a8, [Ljava.lang.Object;@1938886, [Ljava.lang.Object;@e8259c]
可以看到结果是Object数组,而不是单个name值,可以看出主要原因是第二页分页需要加一个rownum造成的。
解决方案,使用hibernate标量:
q.addScalar("name", StringType.INSTANCE);
这样就不会有问题了。
已提交给hibernate jira
相关推荐
### Hibernate SQLQuery 查询Oracle char类型结果为一个字符的解决方法 在使用Hibernate框架结合Oracle数据库进行数据查询时,经常会遇到一个问题:当查询的结果集中包含char类型的字段时,Hibernate可能会将其映射...
在Java的持久化框架Hibernate中,SQLQuery是用于执行自定义SQL语句的重要工具,它允许开发者绕过ORM(对象关系映射)的抽象层,直接与数据库进行交互。这篇博客"Hibernate SQLQuery 本地查询"可能详细讲解了如何利用...
在Java的Hibernate框架中,有时候我们需要执行自定义的SQL查询以获取特定的数据,这时就可以使用SQLQuery接口。本文将深入探讨Hibernate如何通过SQLQuery接口执行原生SQL查询,并展示如何处理查询结果。 一、创建...
本篇文章将深入探讨如何使用Hibernate的Query接口来调用Oracle的存储过程和函数,以及提供相关的示例代码和数据库文件。 首先,让我们了解什么是存储过程和函数。存储过程是预编译的SQL语句集合,可以接受参数、...
hibernate sql hqlsql
标题 "Myeclipse 10.0 + Hibernate 4.3.5 连接 Oracle 11G的演示代码" 描述的是一个整合项目,它将Myeclipse 10.0集成开发环境、Hibernate 4.3.5对象关系映射框架与Oracle 11G数据库相结合,用于演示如何在这样的...
在本Demo中,Hibernate3可能被用来创建User实体类,映射到Oracle数据库中的用户表,通过HQL(Hibernate Query Language)进行数据查询和更新。 Oracle作为一款强大的关系型数据库管理系统,广泛应用于大型企业级...
标题“hibernate实例连oracle”表明我们正在讨论如何使用Hibernate框架来连接并操作Oracle数据库。Hibernate是一个流行的Java对象关系映射(ORM)工具,它允许开发者使用面向对象的编程方式来处理数据库交互,而无需...
fix包 博文链接:https://raymondhekk.iteye.com/blog/250427
在某些情况下,开发者可能需要使用原生SQL查询来执行特定的数据库操作,这时就可以利用Hibernate的SQLQuery功能。本文将详细讲解如何使用Hibernate的SQLQuery进行本地SQL查询。 首先,创建SQLQuery实例是通过...
《构建基于SpringMVC、Hibernate和Oracle的基础框架》 在现代企业级应用开发中,SpringMVC、Hibernate和Oracle的组合被广泛应用于构建强大的后端系统。这些技术各自扮演着关键角色,共同构成了一个高效、稳定的开发...
【描述】"hibernate, oracle, insert, query, update, delete" 是关键主题,这表明项目的核心是使用Java持久化框架Hibernate与Oracle关系型数据库系统交互,涵盖数据的增、删、改、查四大基本操作。 【标签】...
本示例演示Hibernate 3.2呼叫Oracle的存贮过程和函数,以及通过Hibernate的Query接口简化JDBC的开发步骤--两个步骤得到List集合。使用这种方式开发可以要求开发人员不需要太了解Hibernate框架,但是需要开发人员非常...
这个压缩包提供了一个使用SSH(Struts2、Spring、Hibernate)和Oracle数据库的示例项目,名为"Myssh2",对于初学者来说,这是一个很好的学习资源。 **Struts2** 是一个MVC(Model-View-Controller)框架,负责处理...
9. **查询语言HQL和SQL**:Hibernate提供了一种面向对象的查询语言——HQL(Hibernate Query Language),以及对原生SQL的支持。我们可以根据需求选择合适的查询方式。 10. **缓存机制**:Hibernate提供了第一级...
4. **定义Hibernate Native SQL查询**:由于Hibernate默认不支持调用存储过程或函数,我们需要使用`@NamedNativeQuery`或`@SqlResultSetMapping`注解来定义一个原生SQL查询,用于调用Oracle函数。例如: ```java @...
在Java开发中,Hibernate作为一个非常流行的ORM框架,提供了多种查询方式,其中就包括了HQL(Hibernate Query Language)和原生SQL查询。本文将针对给定代码片段中的核心知识点——如何在Hibernate中使用原生SQL而非...
本文将深入探讨如何在Hibernate中实现Oracle数据库的自动增长特性,这一功能对于确保数据表中的主键唯一性至关重要。 ### Oracle数据库的自动增长机制 Oracle数据库提供了强大的序列(sequence)功能来支持自动增长...
Hibernate提供了一种基于Java语法的查询语言HQL(Hibernate Query Language),以及Criteria API,它们可以更直观地处理数据库查询,而无需直接编写SQL。 9. **缓存机制** Hibernate支持二级缓存,可以提高数据...