hibernate/hibernate-orm · error · IllegalArgumentException
Can't emulate fetch clause type: {}
Error message
Can't emulate fetch clause type: {} What it means
Error "Can't emulate fetch clause type: {}" thrown in hibernate/hibernate-orm.
Source
Thrown at hibernate-core/src/main/java/org/hibernate/dialect/sql/ast/H2SqlAstTranslator.java:262
@Override
public void visitOffsetFetchClause(QueryPart queryPart) {
if ( !currentFullJoinEmulationHelper().isFullJoinEmulationQueryPart( queryPart ) ) {
if ( isRowsOnlyFetchClauseType( queryPart ) ) {
if ( supportsOffsetFetchClause() ) {
renderOffsetFetchClause( queryPart, true );
}
else {
renderLimitOffsetClause( queryPart );
}
}
else {
if ( supportsOffsetFetchClausePercentWithTies() ) {
renderOffsetFetchClause( queryPart, true );
}
else {
// FETCH PERCENT and WITH TIES were introduced along with window functions
throw new IllegalArgumentException(
"Can't emulate fetch clause type: " + queryPart.getFetchClauseType() );
}
}
}
}
@Override
protected void renderSelectTupleComparison(
List<SqlSelection> lhsExpressions,
SqlTuple tuple,
ComparisonOperator operator) {
emulateSelectTupleComparison( lhsExpressions, tuple.getExpressions(), operator, true );
}
@Override
protected void visitSqlSelections(SelectClause selectClause) {
final boolean renderAsArray = this.renderAsArray;
this.renderAsArray = false;View on GitHub (pinned to fad1729dce)
Solutions
- Use a fetch clause type supported by H2 (e.g. ROWS ONLY) or switch to limit/offset pagination
- Avoid PERCENT or WITH TIES fetch clauses on H2
When it happens
Trigger: Thrown at hibernate-core/src/main/java/org/hibernate/dialect/sql/ast/H2SqlAstTranslator.java:262 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of hibernate/hibernate-orm@fad1729dce (2026-08-22).
Data as JSON: /api/errors/a81b9192d5c1a707.
Report an issue: GitHub.