StringBuilder pagingSelect = new StringBuilder(sql.length() + 100);
if (hasOffset) {
pagingSelect.append("select outer.* from (select inner.*, rownum rownum_ from (");
} else {
pagingSelect.append("select * from ( ");
}
pagingSelect.append(sql);
if (hasOffset) {
pagingSelect.append(" ) inner) outer where outer.rownum_ <= ? and outer.rownum_ > ?");
} else {
pagingSelect.append(" ) where rownum <= ?");
}
if (isForUpdate) {
pagingSelect.append(" for update");
}
return pagingSelect.toString();
}
}
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
possible fix / workaround:
public class YAOracle10gDialect extends Oracle10gDialect {
/**
*/
public String getLimitString(String sql, boolean hasOffset) {
sql = sql.trim();
boolean isForUpdate = false;
if (sql.toLowerCase().endsWith(" for update")) { sql = sql.substring(0, sql.length() - 11); isForUpdate = true; }
StringBuilder pagingSelect = new StringBuilder(sql.length() + 100);
if (hasOffset) { pagingSelect.append("select outer.* from (select inner.*, rownum rownum_ from ("); } else { pagingSelect.append("select * from ( "); }
pagingSelect.append(sql);
if (hasOffset) { pagingSelect.append(" ) inner) outer where outer.rownum_ <= ? and outer.rownum_ > ?"); } else { pagingSelect.append(" ) where rownum <= ?"); }
if (isForUpdate) { pagingSelect.append(" for update"); }
return pagingSelect.toString();
}
}