BATCH-1590: fix another bug in oracle paging

This commit is contained in:
dsyer
2010-06-29 10:34:48 +00:00
parent 9670261c82
commit 3984ba1791
5 changed files with 35 additions and 33 deletions

View File

@@ -101,12 +101,14 @@ public class SqlPagingQueryUtils {
public static String generateRowNumSqlQuery(AbstractSqlPagingQueryProvider provider, String selectClause, boolean remainingPageQuery,
String rowNumClause) {
StringBuilder sql = new StringBuilder();
sql.append("SELECT * FROM (SELECT ").append(selectClause).append(", ROWNUM as TMP_ROW_NUM");
sql.append(" FROM ").append(provider.getFromClause());
// TODO: BATCH-1590 fix this little hack to extract the alias name for a jump to item query
String selectAlias = selectClause.replaceAll(".* (as|AS) (.*)", "$2");
sql.append("SELECT * FROM (SELECT ").append(selectAlias).append(", ROWNUM as TMP_ROW_NUM");
sql.append(" FROM (SELECT ").append(selectClause).append(" FROM ").append(provider.getFromClause());
buildWhereClause(provider, remainingPageQuery, sql);
sql.append(" ORDER BY ").append(provider.getSortKey());
buildAscendingClause(provider, sql);
sql.append(") WHERE ").append(rowNumClause);
sql.append(")) WHERE ").append(rowNumClause);
return sql.toString();