`

hibernate下获取mysql表中的rownum所遇bug

阅读更多
在项目中,想要获取mysql的行号,好不容易进行查找进行转换可以得到行号,语句类似于“set @rownum=0, @preval=null; select @rnk:=IF((@rownum := @rownum + 1) and (@preval <=> sal), @rnk, @rownum) AS rnk, @preval:=sal sal FROM emp order by sal;”在mysql(5.X版本)中的sql编辑器中可以运行通过,但是在java程序中却抛出异常:org.hibernate.QueryException: Space is not allowed after parameter prefix ':' ....

在网上 查找了资料,却发现这是hibernate3.X包之下的一个bug,(参照http://bugs.mysql.com/bug.php?id=41741)在hibernate4.X中已经修复。但是项目中不可能使用hibernate4.0,最后不能不使用原生jdbc进行解决...



令人遗憾的是,这种错误或是bug,我在网上寻找资料的时候,全部是在外国网站上找到的,国内的中文的网站找不到提出此种错误和解决方案,不知道是国内的程序员技术如此好,没有遇到,还是国外的人,技术如此的差,哎,令人可悲可叹!!!国人风气如此,无奈啊!!!
分享到:
评论

相关推荐

    mysql实现rownum和上一条,下一条功能

    1.或许有的人会用id+limit来实现上一条,下一条功能.但是.我们试想一下.有的业务并不是用id来排序的.那这样的方法就没效果了. 2.现在找到了生成rownum的方法,并且优化了执行速度. 3.直接上我项目里的sql,希望对大家...

    sql语句中select top n与oracle的rownum与mysql的limit用法

    sql语句中select top n与oracle的rownum与mysql的limit 取前几条数据sql简单用法

    mysql类似oracle rownum写法实例详解

    在 Oracle 中,如果你想要获取表中的第一条记录,你可以使用如下的 `ROWNUM` 写法: ```sql SELECT * FROM t WHERE ROWNUM = 1 ORDER BY id; ``` 而在 MySQL 中,要达到相同的效果,你需要使用 `LIMIT` 关键字配合...

    ORACLE 中ROWNUM用法总结

    `ROWNUM`是一个伪列,它并不存储在表中,而是在查询执行过程中动态生成,用来表示查询结果中的行序号。`ROWNUM`始终从1开始,并递增,但仅在查询结果集中有效,也就是说,它基于查询语句所返回的行数来计数。 ### ...

    MYSQL获取行号row_no

    综上所述,MySQL中获取行号的方式有多种,具体选择哪种取决于实际需求和数据特性。对于小规模数据集,推荐使用第一种方法;对于需要按特定顺序排列的大型数据集,则建议采用第二种方法;而对于只需要筛选部分记录的...

    springmvc+hibernate+poi实现mysql数据库简单操作以及导出excel功能

    接下来,我们需要创建MySQL数据库表,并在Hibernate的映射文件(如`.hbm.xml`)中配置对应的映射关系。这通常涉及列名、类型、主键等属性的设置。 在SpringMVC中,我们将定义控制器(Controller)来处理HTTP请求。...

    oracle中rownum的用法

    当您希望仅获取表中的某一行数据时,可以利用`ROWNUM = 1`这样的条件来实现。例如: ```sql SELECT ROWNUM, ID, NAME FROM STUDENT WHERE ROWNUM = 1; ``` 这条语句将返回`STUDENT`表中的第一行数据。 ##### 2. 跳...

    Oracle中rownum的使用

    Oracle中rownum的使用

    rownum用法(不使用minus)

    此查询首先从学生表中获取前 20 行数据,然后再从中选择第 11 行至第 20 行的数据。 总结而言,在使用 `rownum` 进行分页查询时需要注意以下几点: 1. 使用 `rownum = 1` 可以直接查询第一条记录。 2. 通过嵌套...

    对于 Oracle 的 rownum 问题

    可如果用 select rownum,c1 from t1 where rownum &gt; 10 (如果写下这样的查询语句,这时候在您的头脑中应该是想得到表中后面10条记录),你就会发现,显示出来的结果要让您失望了,也许您还会怀疑是不谁删了一些记录,...

    ROWNUM的使用技巧

    ROWNUM 是 Oracle 中的一种伪列,它可以根据返回记录生成一个序列化的数字。利用 ROWNUM,我们可以生产一些原先难以实现的结果输出,但是因为它是伪列的特殊性,在使用时需要注意一些事项,以免掉入“陷阱”。 特殊...

    oracle rownum 的使用 和sqlserver有区别的!

    - ROWNUM 的值是在数据检索的过程中动态生成的,这意味着它并不依赖于表中的任何字段。 2. **基础查询:** - 直接使用 ROWNUM 进行查询是最简单的应用场景之一。例如: ```sql SELECT ROWNUM, id, name FROM ...

    Hibernate分页查询原理解读

    在这个例子中,假设当前使用的数据库为MySQL,则Hibernate内部会调用`MySQLDialect`中的方法来生成带有LIMIT关键字的SQL语句,具体实现如下: ```java public String getLimitString(String sql) { StringBuffer ...

    用Distinct在MySQL中查询多条不重复记录值,绝对的物有所值

    在IT行业的数据库管理与开发领域,SQL语言是不可或缺的一部分,尤其在关系型数据库如MySQL中,其作用更是举足轻重。今天,我们将深入探讨如何使用`DISTINCT`关键字在MySQL中查询多条不重复记录值,这不仅是一种实用...

    Mysql转oracle工具

    例如,MySQL支持的`LIMIT`在Oracle中需用`ROWNUM`或`FETCH FIRST`来实现分页;MySQL的`INFORMATION_SCHEMA`在Oracle中对应的是`DBA_`或`USER_`视图;此外,存储过程、触发器和函数的语法也有区别。 2. **数据类型...

    oracle中rownum的用法及解说

    - 如果在一个查询中没有对结果集进行排序或过滤,则`ROWNUM`将按照数据在表中的物理顺序进行编号。 2. **ROWNUM的限制与条件:** - `ROWNUM`不能用于`WHERE`子句中作为筛选条件。 - 使用`ROWNUM`时,通常需要将...

    C# Mysql 查询 Rownum的解决方法

    在C#中执行此查询时,由于变量`@rownum`是用户定义的,可能会引发错误,因为默认情况下,MySQL连接不支持用户定义变量。为了解决这个问题,我们需要在建立数据库连接时设置一个特定的连接字符串参数`Allow User ...

    Oracle中ROWNUM的使用技巧.docx

    1. **Top N 结果输出**:在不考虑特定排序的情况下,我们可以直接通过`WHERE ROWNUM 来获取前N条记录。然而,如果需要基于特定排序获取Top N,这种方法可能会出现问题,因为ROWNUM是在查询执行过程中逐行生成的,而...

    oracle中利用关键字rownum查询前20名员工信息及rownum用法

    注意:对 rownum(伪列) 只能使用 &lt;...如果直接按如下查询得下图结果,显然不正确的,rownum(伪列)  是按查询顺序来排列的,应当先查询筛选排好列,再查询例如上例  查询法; Select rownum,first_name,sa

    oracle_SQL中rowid与rownum的使用

    在Oracle SQL中,`ROWID`和`ROWNUM`是两个非常重要的概念,它们在数据库查询和数据操作中起着至关重要的作用。本文将详细探讨这两个特性,包括它们的定义、用途以及如何在实际场景中有效利用它们。 一、ROWID详解 `...

Global site tag (gtag.js) - Google Analytics