hibernate/hibernate-orm · error · QueryException

Can't emulate on error clause on SQL server

Error message

Can't emulate on error clause on SQL server

What it means

Error "Can't emulate on error clause on SQL server" thrown in hibernate/hibernate-orm.

Source

Thrown at hibernate-core/src/main/java/org/hibernate/dialect/function/json/SQLServerJsonValueFunction.java:34

/**
 * SQL Server json_value function.
 */
public class SQLServerJsonValueFunction extends JsonValueFunction {

	public SQLServerJsonValueFunction(TypeConfiguration typeConfiguration) {
		super( typeConfiguration, true, false );
	}

	@Override
	protected void render(
			SqlAppender sqlAppender,
			JsonValueArguments arguments,
			ReturnableType<?> returnType,
			SqlAstTranslator<?> walker) {
		// openjson errors by default
		if ( arguments.errorBehavior() != null && arguments.errorBehavior() != JsonValueErrorBehavior.ERROR ) {
			throw new QueryException( "Can't emulate on error clause on SQL server" );
		}
		sqlAppender.appendSql( "(select " );
		final CastTarget returningType = arguments.returningType();
		if ( returningType != null && returningType.getJdbcMapping().getJdbcType().isBinary() ) {
			sqlAppender.appendSql( "convert(" );
			returningType.accept( walker );
			sqlAppender.appendSql( ",v,2)" );
		}
		else {
			sqlAppender.appendSql( "v" );
		}
		sqlAppender.appendSql( " from openjson(" );
		arguments.jsonDocument().accept( walker );
		sqlAppender.appendSql( ") with (v " );
		if ( returningType != null ) {
			if ( returningType.getJdbcMapping().getJdbcType().isBinary() ) {
				sqlAppender.appendSql( "varchar(max)" );
			}

View on GitHub (pinned to fad1729dce)

Solutions

  1. Remove the ON ERROR clause for SQL Server.

When it happens

Trigger: Triggered when the application calls a Hibernate dialect feature that the configured database dialect cannot provide: Can't emulate on error clause on SQL server.

Common situations: Common when running against a database whose dialect lacks this capability, when a mapping or HQL/Criteria query requests unsupported functionality, or when the wrong dialect is configured for the database in use. Error: Can't emulate on error clause on SQL server.


AI-assisted analysis of hibernate/hibernate-orm@fad1729dce (2026-08-22). Data as JSON: /api/errors/3089b3422a5c44c6. Report an issue: GitHub.