hibernate/hibernate-orm · error · QueryException

Can't emulate json_exists(... false on error) on SQL Server

Error message

Can't emulate json_exists(... false on error) on SQL Server

What it means

Error "Can't emulate json_exists(... false on error) on SQL Server" thrown in hibernate/hibernate-orm.

Source

Thrown at hibernate-core/src/main/java/org/hibernate/dialect/function/json/SQLServerJsonExistsFunction.java:89

							sqlAppender,
							"",
							arguments.jsonPath(),
							passingClause,
							walker
					);
				}
				else {
					walker.getSessionFactory().getJdbcServices().getDialect().appendLiteral(
							sqlAppender,
							walker.getLiteralValue( arguments.jsonPath() )
					);
				}
				sqlAppender.appendSql( ")) is null)" );
			}
		}
		else {
			if ( arguments.errorBehavior() == JsonExistsErrorBehavior.FALSE ) {
				throw new QueryException( "Can't emulate json_exists(... false on error) on SQL Server" );
			}
			final String jsonPath = walker.getLiteralValue( arguments.jsonPath() );
			final JsonPathPassingClause passingClause = arguments.passingClause();
			final List<JsonPathHelper.JsonPathElement> pathElements = JsonPathHelper.parseJsonPathElements( jsonPath );
			if ( passingClause != null ) {
				JsonPathHelper.inlinePassingClause( pathElements, passingClause, walker );
			}
			final JsonPathHelper.JsonPathElement lastPathElement = pathElements.get( pathElements.size() - 1 );
			final String prefix = JsonPathHelper.toJsonPath( pathElements, 0, pathElements.size() - 1 );
			final String terminalKey;
			if ( lastPathElement instanceof JsonPathHelper.JsonIndexAccess indexAccess ) {
				terminalKey = String.valueOf( indexAccess.index() );
			}
			else if (lastPathElement instanceof JsonPathHelper.JsonAttribute attribute) {
				terminalKey = attribute.attribute();
			}
			else {
				throw new AssertionFailure( "Unrecognized json path element: " + lastPathElement );

View on GitHub (pinned to fad1729dce)

Solutions

  1. Remove the FALSE 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 json_exists(... false on error) 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 json_exists(... false on error) on SQL Server.


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