{"record":{"id":"4f6f2e793e73deb2","repo":"hibernate/hibernate-orm","slug":"can-t-emulate-wrapper-clause-on-mysql","errorCode":null,"errorMessage":"Can't emulate wrapper clause on MySQL","messagePattern":"Can't emulate wrapper clause on MySQL","errorType":"exception","errorClass":"QueryException","httpStatus":null,"severity":"error","filePath":"hibernate-core/src/main/java/org/hibernate/dialect/function/json/MySQLJsonTableFunction.java","lineNumber":125,"sourceCode":"\t\t\tif ( definition.emptyBehavior() == JsonValueEmptyBehavior.ERROR ) {\n\t\t\t\tsqlAppender.appendSql( \" error on empty\" );\n\t\t\t}\n\t\t\telse if ( definition.emptyBehavior() != JsonValueEmptyBehavior.NULL ) {\n\t\t\t\tfinal Expression defaultExpression = definition.emptyBehavior().getDefaultExpression();\n\t\t\t\tassert defaultExpression != null;\n\t\t\t\tsqlAppender.appendSql( \" default \" );\n\t\t\t\tdefaultExpression.accept( walker );\n\t\t\t\tsqlAppender.appendSql( \" on empty\" );\n\t\t\t}\n\t\t}\n\t\t// todo: mismatch clause?\n\t}\n\n\t@Override\n\tprotected void renderJsonQueryColumnDefinition(SqlAppender sqlAppender, JsonTableQueryColumnDefinition definition, int clauseLevel, SqlAstTranslator<?> walker) {\n\t\t// Conditional wrapper is the default behavior on MySQL\n\t\tif ( definition.wrapMode() != null && definition.wrapMode() != JsonQueryWrapMode.WITH_CONDITIONAL_WRAPPER ) {\n\t\t\tthrow new QueryException( \"Can't emulate wrapper clause on MySQL\" );\n\t\t}\n\t\tsqlAppender.appendSql( definition.name() );\n\t\tsqlAppender.appendSql( ' ' );\n\t\tsqlAppender.appendSql( DdlTypeHelper.getTypeName( definition.type(),\n\t\t\t\twalker.getSessionFactory().getTypeConfiguration() ) );\n\t\tif ( definition.type().getJdbcType().getDdlTypeCode() != SqlTypes.JSON ) {\n\t\t\tsqlAppender.appendSql( \" format json\" );\n\t\t}\n\n\t\tif ( definition.jsonPath() != null ) {\n\t\t\tsqlAppender.appendSql( \" path \" );\n\t\t\tsqlAppender.appendSingleQuoteEscapedString( definition.jsonPath() );\n\t\t}\n\t\telse {\n\t\t\tsqlAppender.appendSql( \" path '$.\" );\n\t\t\tsqlAppender.appendSql( definition.name() );\n\t\t\tsqlAppender.appendSql( \"'\" );\n\t\t}","sourceCodeStart":107,"sourceCodeEnd":143,"githubUrl":"https://github.com/hibernate/hibernate-orm/blob/fad1729dce015f908198d57a8d80274a30f905a5/hibernate-core/src/main/java/org/hibernate/dialect/function/json/MySQLJsonTableFunction.java#L107-L143","documentation":"Error \"Can't emulate wrapper clause on MySQL\" thrown in hibernate/hibernate-orm.","triggerScenarios":"Triggered when the application calls a Hibernate dialect feature that the configured database dialect cannot provide: Can't emulate wrapper clause on MySQL.","commonSituations":"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 wrapper clause on MySQL.","solutions":["Remove the WITH WRAPPER clause for MySQL."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"fad1729dce015f908198d57a8d80274a30f905a5","analyzedAt":"2026-08-22T04:13:57.527Z","schemaVersion":2},"datasetVersion":"2026-08-22T09:17:25.309Z"}