|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcom.github.drinkjava2.jdialects.hibernatesrc.pagination.AbstractLimitHandler
com.github.drinkjava2.jdialects.hibernatesrc.pagination.SQLServer2005LimitHandler
com.github.drinkjava2.jdialects.hibernatesrc.pagination.SQLServer2012LimitHandler
public class SQLServer2012LimitHandler
LIMIT clause handler compatible with SQL Server 2012 and later.
| Field Summary |
|---|
| Fields inherited from class com.github.drinkjava2.jdialects.hibernatesrc.pagination.SQLServer2005LimitHandler |
|---|
topAdded |
| Constructor Summary | |
|---|---|
SQLServer2012LimitHandler()
|
|
| Method Summary | |
|---|---|
int |
bindLimitParametersAtEndOfQuery(RowSelection selection,
PreparedStatement statement,
int index)
Bind parameter values needed by the LIMIT clause afterQuery original SELECT statement. |
int |
convertToFirstRowValue(int zeroBasedFirstResult)
Hibernate APIs explicitly state that setFirstResult() should be a zero-based offset. |
String |
processSql(String sql,
RowSelection selection)
Add a LIMIT clause to the given SQL SELECT (HHH-2655: ROW_NUMBER for Paging) The LIMIT SQL will look like: |
boolean |
supportsLimit()
Does this handler support some form of limiting query results via a SQL clause? |
boolean |
supportsVariableLimit()
Does this handler support bind variables (i.e., prepared statement parameters) for its limit/offset? |
boolean |
useMaxForLimit()
Does the LIMIT clause take a "maximum" row number instead of a total number of returned rows? This is easiest understood via an example. |
| Methods inherited from class com.github.drinkjava2.jdialects.hibernatesrc.pagination.SQLServer2005LimitHandler |
|---|
addTopExpression, bindLimitParametersAtStartOfQuery, encloseWithOuterQuery, fillAliasInSelectClause, supportsLimitOffset |
| Methods inherited from class com.github.drinkjava2.jdialects.hibernatesrc.pagination.AbstractLimitHandler |
|---|
bindLimitParameters, bindLimitParametersFirst, bindLimitParametersInReverseOrder, forceLimitUsage, getMaxOrLimit, setMaxRows |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public SQLServer2012LimitHandler()
| Method Detail |
|---|
public boolean supportsLimit()
LimitHandler
supportsLimit in interface LimitHandlersupportsLimit in class SQLServer2005LimitHandlerpublic boolean supportsVariableLimit()
AbstractLimitHandler
supportsVariableLimit in class SQLServer2005LimitHandler
public String processSql(String sql,
RowSelection selection)
SQLServer2005LimitHandler
WITH query AS (
SELECT inner_query.*
, ROW_NUMBER() OVER (ORDER BY CURRENT_TIMESTAMP) as __hibernate_row_nr__
FROM ( original_query_with_top_if_order_by_present_and_all_aliased_columns ) inner_query
)
SELECT alias_list FROM query WHERE __hibernate_row_nr__ >= offset AND __hibernate_row_nr__ < offset + last
When offset equals 0, only TOP(?) expression is
added to the original query.
processSql in interface LimitHandlerprocessSql in class SQLServer2005LimitHandlersql - the SQL query to process.selection - the selection criteria for rows.
public boolean useMaxForLimit()
AbstractLimitHandler
useMaxForLimit in class SQLServer2005LimitHandlerpublic int convertToFirstRowValue(int zeroBasedFirstResult)
AbstractLimitHandlerAbstractLimitHandler#processSql(String, com.github.drinkjava2.jdialects.hibernatesrc.pagination.hibernate.engine.spi.RowSelection) is the zero-based offset.
Dialects which do not AbstractLimitHandler.supportsVariableLimit() should take care to perform any needed first-row-conversion
calls prior to injecting the limit values into the SQL string.
convertToFirstRowValue in class SQLServer2005LimitHandlerzeroBasedFirstResult - The user-supplied, zero-based first row offset.
org.hibernate.Query#setFirstResult,
org.hibernate.Criteria#setFirstResult
public int bindLimitParametersAtEndOfQuery(RowSelection selection,
PreparedStatement statement,
int index)
throws SQLException
LimitHandler
bindLimitParametersAtEndOfQuery in interface LimitHandlerbindLimitParametersAtEndOfQuery in class SQLServer2005LimitHandlerselection - the selection criteria for rows.statement - Statement to which to bind limit parameter values.index - Index from which to start binding.
SQLException - Indicates problems binding parameter values.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||