diff --git a/CHANGELOG.md b/CHANGELOG.md index 1384206b2..aa1f7fd3f 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ * 【core 】 修复ReflectUtil 反射方法中桥接判断问题(issue#2625@Github) * 【poi 】 修复ExcelWriter导出List引起的个数混乱问题(issue#2627@Github) * 【poi 】 修复ExcelReader读取时间变成12小时形式问题(issue#I5Q1TW@Gitee) +* 【db 】 修复DB工具分页查询的时候oracle数据库会把ROWNUM_也带出来问题(issue#2618@Github) ------------------------------------------------------------------------------------------------------------- diff --git a/hutool-db/src/main/java/cn/hutool/db/dialect/impl/OracleDialect.java b/hutool-db/src/main/java/cn/hutool/db/dialect/impl/OracleDialect.java index 037aaf8a0..a07d34c03 100644 --- a/hutool-db/src/main/java/cn/hutool/db/dialect/impl/OracleDialect.java +++ b/hutool-db/src/main/java/cn/hutool/db/dialect/impl/OracleDialect.java @@ -35,8 +35,8 @@ public class OracleDialect extends AnsiSqlDialect { return find .insertPreFragment("SELECT * FROM ( SELECT row_.*, rownum rownum_ from ( ") .append(" ) row_ where rownum <= ").append(startEnd[1])// - .append(") table_alias")// - .append(" where table_alias.rownum_ > ").append(startEnd[0]);// + .append(") table_alias_")// + .append(" where table_alias_.rownum_ > ").append(startEnd[0]);// } @Override diff --git a/hutool-db/src/main/java/cn/hutool/db/handler/HandleHelper.java b/hutool-db/src/main/java/cn/hutool/db/handler/HandleHelper.java index 585dd5aa8..e7ee33a14 100644 --- a/hutool-db/src/main/java/cn/hutool/db/handler/HandleHelper.java +++ b/hutool-db/src/main/java/cn/hutool/db/handler/HandleHelper.java @@ -149,9 +149,16 @@ public class HandleHelper { */ public static T handleRow(T row, int columnCount, ResultSetMetaData meta, ResultSet rs, boolean withMetaInfo) throws SQLException { int type; + String columnLabel; for (int i = 1; i <= columnCount; i++) { type = meta.getColumnType(i); - row.put(meta.getColumnLabel(i), getColumnValue(rs, i, type, null)); + columnLabel = meta.getColumnLabel(i); + if("rownum_".equalsIgnoreCase(columnLabel)){ + // issue#2618@Github + // 分页时会查出rownum字段,此处忽略掉读取 + continue; + } + row.put(columnLabel, getColumnValue(rs, i, type, null)); } if (withMetaInfo) { try {