{"record":{"id":"7d776cf652adaee8","repo":"hibernate/hibernate-orm","slug":"getgeneratedkeys-support-is-not-enabled","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/MutationStatementPreparerImpl.java","lineNumber":62,"sourceCode":"\t\t};\n\t}\n\n\t@Override\n\tpublic PreparedStatement prepareStatement(String sql, int autoGeneratedKeys) {\n\t\tif ( autoGeneratedKeys == PreparedStatement.RETURN_GENERATED_KEYS ) {\n\t\t\tcheckAutoGeneratedKeysSupportEnabled();\n\t\t}\n\t\treturn new StatementPreparationTemplate( sql ) {\n\t\t\tpublic PreparedStatement doPrepare() throws SQLException {\n\t\t\t\t//noinspection resource\n\t\t\t\treturn connection().prepareStatement( sql, autoGeneratedKeys );\n\t\t\t}\n\t\t}.prepareStatement();\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, String[] columnNames) {\n\t\tcheckAutoGeneratedKeysSupportEnabled();\n\t\treturn new StatementPreparationTemplate( sql ) {\n\t\t\tpublic PreparedStatement doPrepare() throws SQLException {\n\t\t\t\t//noinspection resource\n\t\t\t\treturn connection().prepareStatement( sql, columnNames );\n\t\t\t}\n\t\t}.prepareStatement();\n\t}\n\n\tprivate abstract class StatementPreparationTemplate {\n\t\tprotected final String sql;\n\n\t\tprotected StatementPreparationTemplate(String incomingSql) {","sourceCodeStart":44,"sourceCodeEnd":80,"githubUrl":"https://github.com/hibernate/hibernate-orm/blob/fad1729dce015f908198d57a8d80274a30f905a5/hibernate-core/src/main/java/org/hibernate/engine/jdbc/internal/MutationStatementPreparerImpl.java#L44-L80","documentation":"An org.hibernate.AssertionFailure thrown by MutationStatementPreparerImpl.checkAutoGeneratedKeysSupportEnabled(): an insert mutation is being prepared with Statement.RETURN_GENERATED_KEYS (identity-style id generation), but the SessionFactory setting hibernate.jdbc.use_get_generated_keys resolved to false. It signals a configuration contradiction, not a runtime data problem.","triggerScenarios":"Entity uses GenerationType.IDENTITY (or native) while hibernate.jdbc.use_get_generated_keys=false is set explicitly in persistence.xml/application.properties or via SessionFactoryBuilder, so the generated-keys insert path trips the assertion at flush time.","commonSituations":"Configs copied from old projects or tuning guides that disabled generated keys (often for batch-insert performance) and later reused on entities with identity columns; programmatic SessionFactoryBuilder overriding the setting.","solutions":["Remove the explicit hibernate.jdbc.use_get_generated_keys=false setting, or set it to true","If the target driver genuinely lacks getGeneratedKeys support, change id generation to SEQUENCE, TABLE or UUID instead of IDENTITY","Audit programmatic configuration (SessionFactoryBuilder, StandardServiceRegistryBuilder) for overrides of this key"],"exampleFix":"# before\nhibernate.jdbc.use_get_generated_keys=false\n@Entity class A { @Id @GeneratedValue(strategy=IDENTITY) Long id; }\n\n# after: drop the override (default is auto-detected)\n# hibernate.jdbc.use_get_generated_keys removed","handlingStrategy":"validation","validationCode":"// assert config consistency before building the factory\nMap<String,Object> props = new HashMap<>();\nif (Boolean.FALSE.equals(props.get(\"hibernate.jdbc.use_get_generated_keys\"))\n        && usesIdentityGeneration(metadata)) {\n    throw new IllegalStateException(\"IDENTITY generation requires hibernate.jdbc.use_get_generated_keys\");\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Do not copy hibernate.jdbc.use_get_generated_keys=false into new projects","When disabling generated keys, switch entities off IDENTITY generation","Keep all Hibernate settings in one reviewed location"],"tags":["configuration","identity","generated-keys","jdbc","hibernate"],"backgroundTag":"getgeneratedkeys-disabled","analyzedSha":"fad1729dce015f908198d57a8d80274a30f905a5","analyzedAt":"2026-08-22T04:13:57.527Z","schemaVersion":2},"datasetVersion":"2026-08-22T09:17:25.309Z"}