hibernate/hibernate-orm · error · QueryException
Dialect [" + procedureCall.getSession().getJdbcServices().ge
Error message
Dialect [" + procedureCall.getSession().getJdbcServices().getJdbcEnvironment().getDialect().getClass().getName() + "] not known to support REF_CURSOR parameters
What it means
Error "Dialect [" + procedureCall.getSession().getJdbcServices().getJdbcEnvironment().getDialect().getClass().getName() + "] not known to support REF_CURSOR parameters" thrown in hibernate/hibernate-orm.
Source
Thrown at hibernate-core/src/main/java/org/hibernate/procedure/internal/JTDSCallableStatementSupport.java:63
final StringBuilder buffer;
final int offset;
if ( functionReturn != null ) {
throw new QueryException( "The jTDS driver does not support calling functions through the JDBC CallableStatement API" );
}
offset = 1;
buffer = new StringBuilder( 9 + procedureName.length() + paramStringSizeEstimate ).append( "{call " );
buffer.append( procedureName );
if ( registrations.isEmpty() ) {
buffer.append( '(' );
}
else {
char sep = '(';
for ( int i = 0; i < registrations.size(); i++ ) {
final ProcedureParameterImplementor<?> parameter = registrations.get( i );
if ( parameter.getMode() == ParameterMode.REF_CURSOR ) {
throw new QueryException( "Dialect [" + procedureCall.getSession().getJdbcServices().getJdbcEnvironment().getDialect().getClass().getName() + "] not known to support REF_CURSOR parameters" );
}
buffer.append( sep );
final JdbcCallParameterRegistration registration = parameter.toJdbcParameterRegistration(
i + offset,
procedureCall
);
if ( parameter.getName() != null ) {
buffer.append( '@' ).append( parameter.getName() ).append( "=?" );
}
else {
buffer.append( "?" );
}
sep = ',';
builder.addParameterRegistration( registration );
}
}
buffer.append( ")}" );View on GitHub (pinned to fad1729dce)
Solutions
- Use a dialect that supports REF_CURSOR (e.g. OracleDialect, PostgreSQLDialect) instead of the jTDS/Sybase dialect.
- Register the parameter as a normal OUT parameter instead of REF_CURSOR.
When it happens
Trigger: A REF_CURSOR parameter is registered on a dialect/driver without REF_CURSOR support.
Common situations: Porting stored procedure code between databases or using a driver (e.g. jTDS, some Sybase setups) lacking cursor support.
AI-assisted analysis of hibernate/hibernate-orm@fad1729dce (2026-08-22).
Data as JSON: /api/errors/ab9bda3cab09ab8c.
Report an issue: GitHub.