BATCH-1595: tweak jump to item query for Oracle

This commit is contained in:
dsyer
2010-07-11 06:25:34 +00:00
parent c51bb5ecd9
commit d22bc927a2
4 changed files with 13 additions and 6 deletions

View File

@@ -42,7 +42,7 @@ public class OraclePagingQueryProvider extends AbstractSqlPagingQueryProvider {
int page = itemIndex / pageSize;
int offset = (page * pageSize);
offset = offset == 0 ? 1 : offset;
return SqlPagingQueryUtils.generateRowNumSqlQueryWithNesting(this, this.getSortKey(), false, "TMP_ROW_NUM = "
return SqlPagingQueryUtils.generateRowNumSqlQueryWithNesting(this, this.getSortKey() + " AS SORT_KEY", "SORT_KEY", false, "TMP_ROW_NUM = "
+ offset);
}

View File

@@ -114,10 +114,16 @@ public class SqlPagingQueryUtils {
public static String generateRowNumSqlQueryWithNesting(AbstractSqlPagingQueryProvider provider,
String selectClause, boolean remainingPageQuery, String rowNumClause) {
return generateRowNumSqlQueryWithNesting(provider, selectClause, selectClause, remainingPageQuery, rowNumClause);
}
public static String generateRowNumSqlQueryWithNesting(AbstractSqlPagingQueryProvider provider,
String innerSelectClause, String outerSelectClause, boolean remainingPageQuery, String rowNumClause) {
StringBuilder sql = new StringBuilder();
sql.append("SELECT * FROM (SELECT ").append(selectClause).append(", ROWNUM as TMP_ROW_NUM");
sql.append(" FROM (SELECT ").append(selectClause).append(" FROM ").append(provider.getFromClause());
sql.append("SELECT * FROM (SELECT ").append(outerSelectClause).append(", ROWNUM as TMP_ROW_NUM");
sql.append(" FROM (SELECT ").append(innerSelectClause).append(" FROM ").append(provider.getFromClause());
buildWhereClause(provider, remainingPageQuery, sql);
sql.append(" ORDER BY ").append(provider.getSortKey());
buildAscendingClause(provider, sql);