`

使用hibernate对oracle数据库中数据分页出现重复记录

 
阅读更多

发现分页出现了重复记录。原以为是自己程序出了问题,可仔细检查了程序之后,并没有发现有什么不对的地方,于是上网查了一下,原来是oracle
分页机制的问题,在oracle中,分页是通过rownum函数来实现的,
rownum顺序号的生成是排序后生成的,例如下面这条sql:
select * from user where rownum <= 20 and rownum > 10 order by userName
按照我们正常的理解,这条sql查询的是user表中按照userName升序后取其10~20条记录,
其实不然,oracle是排序后才生成rownum,理想情况下如userName在user表的值是唯一
的或者userName在数据库中被建了唯一索引,结果是正确的,但是如果userName的值存在
大量重复记录或者为空,就会出现问题重复记录的情况。正确的sql应该这样写:
select * from (select * from (select * from user order by userName) 
where rownum <= 20) where rownum >=10
但是这并不能从根本上解决问题,为了避免这种情况,建议慎用oracle的排序功能,
如果需要使用排序,一定要选择那些建有唯一索引的字段。当然有时候我们可能需要对
那些不是唯一索引的字段进行排序,这些字段的值可能大量重复也可能为空,怎么办,
这时候可以采用联合字段排序,也就是排序字段中包含一个主键或不会重复的字段。

分享到:
评论

相关推荐

    HIbernate与oracle数据库应用例子

    通过上述步骤,开发者可以在Java应用中高效地使用Hibernate与Oracle数据库进行数据操作。实践过程中,应不断优化和调整,以适应不同场景的需求。在实际项目中,还需要关注性能监控、异常处理、安全防护等方面,确保...

    毕业设计jsp+Sturts+hibernate的添删改查以及分页!采用Oracle数据库

    采用Oracle数据库" 是一个基于Web的新闻管理系统,它利用了Java Web技术栈中的核心组件,包括JSP(JavaServer Pages)、Struts、Hibernate,以及数据库管理工具Oracle。这个系统的主要功能是实现对新闻数据的添加、...

    Oracle的SQL分页实践

    在Oracle数据库中,SQL分页是一种非常常见的查询技术,它允许我们从大量数据中按需获取一部分结果,而不是一次性加载所有记录。这对于提高用户体验和优化系统性能至关重要,尤其是在处理大数据量的Web应用中。本实践...

    struts2.0 + hibernate + oracle 分页问题

    Struts2.0、Hibernate和Oracle的整合是Java Web开发中的常见组合,它们分别负责表现层、持久层和数据存储层。在这个项目中,我们关注的是分页问题,这是一个优化用户体验,提高系统性能的重要功能。分页使得大量数据...

    javaweb_分页显示数据库内容

    在 Java Web 应用程序中,分页功能可以使用多种方法来实现,例如使用 Hibernate、iBATIS 等 ORM 工具来实现分页,或者使用自定义的分页算法来实现分页。无论是哪种方法,分页都是 Java Web 应用程序中的一个重要组件...

    java连接Oracle分页显示

    在Java编程中,连接Oracle数据库并实现分页显示是一项常见的任务。这涉及到对数据库的查询操作,特别是当数据量较大时,为了提高用户体验和系统性能,分页展示数据显得尤为重要。Oracle数据库支持多种方式进行分页,...

    java web利用数据库分页

    在Java Web开发中,数据库分页是一种常见的技术,用于处理大量数据时提高应用程序的性能和用户体验。当数据集过大,一次性加载所有记录到用户界面可能导致内存压力和响应速度下降。因此,分页允许用户逐步浏览数据,...

    hibernate数据库相关操作步骤

    - **删除**:通过`Session`的`delete()`方法移除数据库中的记录。 - **查询**: - `Session`的`get()`和`load()`方法根据主键获取对象。 - 使用`Session`的`createQuery()`或`createCriteria()`方法执行HQL...

    orcl数据库分页源码通过数据库实现分页

    在IT行业中,数据库分页是一种常见的数据检索策略,特别是在处理大量数据时,它能有效地提高应用性能并优化用户体验。Oracle(ORCL)数据库是企业级广泛使用的数据库管理系统,提供了强大的分页功能。本文将深入探讨...

    Hibernate中的query 分页.doc

    在Java的持久化框架Hibernate中,分页查询是常见的需求,尤其在处理大量数据时,为了提高用户体验,分页展示数据至关重要。本文将探讨Hibernate中两种主要的分页方式:`query.scroll()`和使用`query.setFirstResult...

    SSH+ORACLE好用分页

    在Oracle数据库中,可以使用内置的SQL分页函数,如ROWNUM或ROW_NUMBER(),结合子查询和临时表,实现高效的分页查询。另外,Oracle还支持索引优化,通过创建索引可以显著提高分页查询的性能。 总的来说,"SSH+ORACLE...

    hibernate连接各种数据库的配置

    除了MySQL外,Hibernate还可以通过C3P0连接池轻松地与Oracle数据库进行连接。以下是关键配置项: - **驱动设置**:`&lt;property name="driverClass" value="org.gjt.mm.mysql.Driver"/&gt;`,指定Oracle JDBC驱动类。 - ...

    java培训笔记Hibernate ejb oracle,struts,分页,购物车

    9. **分页**: 分页是Web应用中常见的数据展示方式,特别是在处理大量数据时。它可以提高用户体验,减少服务器负载。在Java Web开发中,通常通过设置查询参数(如LIMIT和OFFSET)或者使用框架提供的分页工具来实现。 ...

    Oracle数据库基础教程:入门其实很简单

    - 正则表达式:如何在SQL中使用正则表达式进行字符串匹配。 - 字符串格式化:如何使用TO_CHAR等函数进行字符串格式化处理。 4. **Oracle中的数值型处理**: - 数值运算:加减乘除等基本运算操作。 - 数值函数:...

    spring mvc实现Oracle分页

    为了实现分页,我们需要编写SQL语句,包含LIMIT或OFFSET关键字(Oracle中使用ROWNUM和子查询实现类似功能),以限制返回的记录数量。 在Controller层,Spring MVC提供了一个处理HTTP请求并返回响应的机制。在这里,...

    JAVA_JDBC面向对象分页(初步设计二之oracle)

    Oracle数据库作为一款广泛使用的商业数据库系统,经常在企业级应用中被采用。本篇文章将重点讨论如何使用Java JDBC和Oracle数据库实现面向对象的分页查询。 首先,我们需要了解面向对象编程的基本概念。面向对象...

    oracle 分页完整代码

    在Oracle数据库中,分页查询是一项非常常见的操作,特别是在处理大量数据时,为了提高用户体验,我们需要将结果集分块加载,这就是所谓的分页。在这个Java和Oracle结合的分页实现中,我们将探讨如何通过Java后端配合...

    Hibernate+spring+struts2分页

    这三大框架组合在一起,可以提供强大的持久层支持、灵活的依赖注入以及优雅的MVC(模型-视图-控制器)架构,从而实现对Oracle数据库的数据分页展示。 **Hibernate** Hibernate是一个开源的对象关系映射(ORM)框架...

    ssh+oracle分页

    4. **Oracle数据库分页**:Oracle提供了多种分页方式,如ROWNUM、ROW_NUMBER() OVER()结合子查询、游标等。在Hibernate中,由于ROWNUM不能与WHERE子句一起使用,我们通常会结合子查询或者使用Oracle的高级分页特性如...

Global site tag (gtag.js) - Google Analytics