{"record":{"id":"28170255d62069e2","repo":"hibernate/hibernate-orm","slug":"resolving-id-to-natural-id-returned-more-that-one","errorCode":null,"errorMessage":"Resolving id to natural id returned more that one row: %s #%s","messagePattern":"Resolving id to natural id returned more that one row: (.+?) #(.+?)","errorType":"exception","errorClass":"HibernateException","httpStatus":null,"severity":"error","filePath":"hibernate-core/src/main/java/org/hibernate/loader/ast/internal/AbstractNaturalIdLoader.java","lineNumber":365,"sourceCode":"\n\t\tfinal List<?> results =\n\t\t\t\tfactory.getJdbcServices().getJdbcSelectExecutor()\n\t\t\t\t\t\t.list(\n\t\t\t\t\t\t\t\tcreateJdbcOperationQuerySelect( sqlSelect, factory, bindings, QueryOptions.NONE ),\n\t\t\t\t\t\t\t\tbindings,\n\t\t\t\t\t\t\t\tnew NoCallbackExecutionContext( session ),\n\t\t\t\t\t\t\t\t// because we select the natural id,\n\t\t\t\t\t\t\t\t// we want to \"reduce\" the result\n\t\t\t\t\t\t\t\tRowTransformerSingularReturnImpl.instance(),\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tListResultsConsumer.UniqueSemantic.FILTER,\n\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t);\n\n\t\treturn switch ( results.size() ) {\n\t\t\tcase 0 -> null;\n\t\t\tcase 1 -> results.get( 0 );\n\t\t\tdefault -> throw new HibernateException(\n\t\t\t\t\tString.format(\n\t\t\t\t\t\t\t\"Resolving id to natural id returned more that one row: %s #%s\",\n\t\t\t\t\t\t\tentityDescriptor().getEntityName(),\n\t\t\t\t\t\t\tid\n\t\t\t\t\t)\n\t\t\t);\n\t\t};\n\t}\n\n\tvoid applyRestriction(\n\t\t\tTableGroup rootTableGroup,\n\t\t\tConsumer<Predicate> predicateConsumer,\n\t\t\tBiConsumer<JdbcParameter, JdbcParameterBinding> jdbcParameterConsumer,\n\t\t\tObject jdbcValue,\n\t\t\tSelectableMapping jdbcValueMapping,\n\t\t\tSqlExpressionResolver expressionResolver) {\n\t\tfinal var columnReference =\n\t\t\t\tresolveColumnReference( rootTableGroup, jdbcValueMapping, expressionResolver );","sourceCodeStart":347,"sourceCodeEnd":383,"githubUrl":"https://github.com/hibernate/hibernate-orm/blob/fad1729dce015f908198d57a8d80274a30f905a5/hibernate-core/src/main/java/org/hibernate/loader/ast/internal/AbstractNaturalIdLoader.java#L347-L383","documentation":"Error \"Resolving id to natural id returned more that one row: %s #%s\" thrown in hibernate/hibernate-orm.","triggerScenarios":"Thrown at hibernate-core/src/main/java/org/hibernate/loader/ast/internal/AbstractNaturalIdLoader.java:365 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Fix duplicate rows for the natural id; enforce uniqueness on the natural id columns."],"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"}