{"record":{"id":"89283a70bb4c31aa","repo":"hibernate/hibernate-orm","slug":"getgeneratedkeys-support-is-not-enabled-89283a","errorCode":null,"errorMessage":"getGeneratedKeys() support is not enabled","messagePattern":"getGeneratedKeys\\(\\) support is not enabled","errorType":"exception","errorClass":"AssertionFailure","httpStatus":null,"severity":"error","filePath":"hibernate-core/src/main/java/org/hibernate/engine/jdbc/internal/StatementPreparerImpl.java","lineNumber":106,"sourceCode":"\tpublic CallableStatement prepareCallableStatement(String sql) {\n\t\tjdbcCoordinator.executeBatch();\n\t\treturn (CallableStatement) prepareStatement( sql, true );\n\t}\n\n\tprivate StatementPreparationTemplate buildPreparedStatementPreparationTemplate(String sql, final boolean isCallable) {\n\t\treturn new StatementPreparationTemplate( sql ) {\n\t\t\t@Override\n\t\t\tprotected PreparedStatement doPrepare() throws SQLException {\n\t\t\t\treturn isCallable\n\t\t\t\t\t\t? connection().prepareCall( sql )\n\t\t\t\t\t\t: connection().prepareStatement( sql );\n\t\t\t}\n\t\t};\n\t}\n\n\tprivate void checkAutoGeneratedKeysSupportEnabled() {\n\t\tif ( ! settings().isGetGeneratedKeysEnabled() ) {\n\t\t\tthrow new AssertionFailure( \"getGeneratedKeys() support is not enabled\" );\n\t\t}\n\t}\n\n\t@Override\n\tpublic PreparedStatement prepareStatement(String sql, final int autoGeneratedKeys) {\n\t\tif ( autoGeneratedKeys == PreparedStatement.RETURN_GENERATED_KEYS ) {\n\t\t\tcheckAutoGeneratedKeysSupportEnabled();\n\t\t}\n\t\tjdbcCoordinator.executeBatch();\n\t\treturn new StatementPreparationTemplate( sql ) {\n\t\t\tpublic PreparedStatement doPrepare() throws SQLException {\n\t\t\t\treturn connection().prepareStatement( sql, autoGeneratedKeys );\n\t\t\t}\n\t\t}.prepareStatement();\n\t}\n\n\t@Override\n\tpublic PreparedStatement prepareStatement(String sql, final String[] columnNames) {","sourceCodeStart":88,"sourceCodeEnd":124,"githubUrl":"https://github.com/hibernate/hibernate-orm/blob/fad1729dce015f908198d57a8d80274a30f905a5/hibernate-core/src/main/java/org/hibernate/engine/jdbc/internal/StatementPreparerImpl.java#L88-L124","documentation":"Same invariant as the MutationStatementPreparer variant: StatementPreparerImpl.checkAutoGeneratedKeysSupportEnabled() throws an AssertionFailure when a PreparedStatement is requested with PreparedStatement.RETURN_GENERATED_KEYS but the SessionFactory setting hibernate.jdbc.use_get_generated_keys is false. It fires from the classic statement-preparer path, e.g. identity inserts and getGeneratedKeys-style retrieval.","triggerScenarios":"prepareStatement(sql, Statement.RETURN_GENERATED_KEYS) is invoked (identity id generation, native strategy resolving to identity) while hibernate.jdbc.use_get_generated_keys=false was configured explicitly or the resolved setting is false.","commonSituations":"Legacy configuration files that disabled generated keys for old drivers/batch tuning; programmatic settings overrides; copying persistence.xml between projects with different id strategies.","solutions":["Remove hibernate.jdbc.use_get_generated_keys=false or set it to true (the default is auto-detected from the dialect)","If the driver really cannot do getGeneratedKeys, switch entities to SEQUENCE/TABLE/UUID id generation","Search the whole config surface (persistence.xml, properties files, builders, environment variables) for the override"],"exampleFix":"# before\nhibernate.jdbc.use_get_generated_keys=false\n\n# after\nhibernate.jdbc.use_get_generated_keys=true","handlingStrategy":"validation","validationCode":"// fail fast at boot if the setting conflicts with identity mappings\nboolean generatedKeysOff = Boolean.parseBoolean(\n    props.getProperty(\"hibernate.jdbc.use_get_generated_keys\", \"true\"));\nif (!generatedKeysOff || usesIdentity(entities)) { /* ok */ }\nelse throw new IllegalStateException(\"generated keys disabled but IDENTITY used\");","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Default hibernate.jdbc.use_get_generated_keys to auto/true","When a driver lacks getGeneratedKeys, use SEQUENCE or UUID ids","Grep config files for legacy 'use_get_generated_keys=false' during upgrades"],"tags":["configuration","generated-keys","identity","jdbc","hibernate"],"backgroundTag":"getgeneratedkeys-disabled","analyzedSha":"fad1729dce015f908198d57a8d80274a30f905a5","analyzedAt":"2026-08-22T04:13:57.527Z","schemaVersion":2},"datasetVersion":"2026-08-22T09:17:25.309Z"}