{"record":{"id":"bbd42ba87f24b897","repo":"hibernate/hibernate-orm","slug":"no-query-roots-were-specified","errorCode":null,"errorMessage":"No query roots were specified","messagePattern":"No query roots were specified","errorType":"exception","errorClass":"SemanticException","httpStatus":null,"severity":"error","filePath":"hibernate-core/src/main/java/org/hibernate/query/sqm/tree/spi/select/SqmQuerySpec.java","lineNumber":549,"sourceCode":"\t@Nonnull\n\t@Override\n\tpublic SqmQuerySpec<T> setFetch(@Nullable JpaExpression<? extends Number> fetch, FetchClauseType fetchClauseType) {\n\t\tsetFetchExpression( (SqmExpression<? extends Number>) fetch, fetchClauseType );\n\t\treturn this;\n\t}\n\n\t@Override\n\tpublic void validateQueryStructureAndFetchOwners() {\n\t\tvalidateFetchOwners();\n\t}\n\n\tpublic void validateFetchOwners() {\n\t\tif ( getFromClause() != null ) {\n\t\t\tfinal Set<SqmFrom<?, ?>> selectedFromSet;\n\t\t\tfinal var roots = getFromClause().getRoots();\n\t\t\tif ( selectClause.getSelections().isEmpty() ) {\n\t\t\t\tif ( isEmpty( roots ) ) {\n\t\t\t\t\tthrow new SemanticException( \"No query roots were specified\" );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tselectedFromSet = singleton( roots.get( 0 ) );\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tselectedFromSet = newSetFromMap( new IdentityHashMap<>( selectClause.getSelections().size() ) );\n\t\t\t\tfor ( var selection : selectClause.getSelections() ) {\n\t\t\t\t\tcollectSelectedFromSet( selectedFromSet, selection.getSelectableNode() );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( var root : roots ) {\n\t\t\t\tvalidateFetchOwners( selectedFromSet, root );\n\t\t\t\tfor ( var sqmTreat : root.getSqmTreats() ) {\n\t\t\t\t\tvalidateFetchOwners( selectedFromSet, sqmTreat );\n\t\t\t\t}\n\t\t\t}","sourceCodeStart":531,"sourceCodeEnd":567,"githubUrl":"https://github.com/hibernate/hibernate-orm/blob/fad1729dce015f908198d57a8d80274a30f905a5/hibernate-core/src/main/java/org/hibernate/query/sqm/tree/spi/select/SqmQuerySpec.java#L531-L567","documentation":"Error \"No query roots were specified\" thrown in hibernate/hibernate-orm.","triggerScenarios":"The query spec is validated or resolved while containing no FROM roots at all.","commonSituations":"Building a criteria query and never calling from(); add at least one root entity.","solutions":["Add at least one root to the query: criteria.from(Entity.class) for criteria, or a FROM clause for HQL.","Check code that builds the FROM clause conditionally and make sure at least one root is always added."],"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"}