{"record":{"id":"08bafbef446ec21c","repo":"hibernate/hibernate-orm","slug":"a-cte-with-the-label-tableexpression-alrea","errorCode":null,"errorMessage":"A CTE with the label \" + tableExpression + \" already exists","messagePattern":"A CTE with the label \" \\+ tableExpression \\+ \" already exists","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"hibernate-core/src/main/java/org/hibernate/sql/ast/tree/AbstractStatement.java","lineNumber":53,"sourceCode":"\n\t@Override\n\tpublic Map<String, CteStatement> getCteStatements() {\n\t\treturn cteStatements;\n\t}\n\n\t@Override\n\tpublic CteStatement getCteStatement(String cteLabel) {\n\t\tfinal var cteStatement = cteStatements.get( cteLabel );\n\t\treturn cteStatement == null && parentCteContainer != null\n\t\t\t\t? parentCteContainer.getCteStatement( cteLabel )\n\t\t\t\t: cteStatement;\n\t}\n\n\t@Override\n\tpublic void addCteStatement(CteStatement cteStatement) {\n\t\tfinal String tableExpression = cteStatement.getCteTable().getTableExpression();\n\t\tif ( cteStatements.putIfAbsent( tableExpression, cteStatement ) != null ) {\n\t\t\tthrow new IllegalArgumentException( \"A CTE with the label \" + tableExpression + \" already exists\" );\n\t\t}\n\t}\n\n\t@Override\n\tpublic Map<String, CteObject> getCteObjects() {\n\t\treturn cteObjects;\n\t}\n\n\t@Override\n\tpublic CteObject getCteObject(String cteObjectName) {\n\t\tfinal var cteObject = cteObjects.get( cteObjectName );\n\t\treturn cteObject == null\n\t\t\t&& parentCteContainer != null\n\t\t\t\t? parentCteContainer.getCteObject( cteObjectName )\n\t\t\t\t: cteObject;\n\t}\n\n\t@Override","sourceCodeStart":35,"sourceCodeEnd":71,"githubUrl":"https://github.com/hibernate/hibernate-orm/blob/fad1729dce015f908198d57a8d80274a30f905a5/hibernate-core/src/main/java/org/hibernate/sql/ast/tree/AbstractStatement.java#L35-L71","documentation":"Error \"A CTE with the label \" + tableExpression + \" already exists\" thrown in hibernate/hibernate-orm.","triggerScenarios":"A CTE is registered under a label that is already present in the statement: \" + tableExpression + \".","commonSituations":"Building a query that defines two common table expressions with the same name/label, e.g. programmatically generated CTEs colliding.","solutions":["Use a unique label for each CTE (WITH clause) in the query; a CTE with the same table expression label was already registered.","Rename the conflicting CTE or remove the duplicate WITH clause definition."],"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"}