hibernate/hibernate-orm · error · SemanticException
No query roots were specified
Error message
No query roots were specified
What it means
Error "No query roots were specified" thrown in hibernate/hibernate-orm.
Source
Thrown at hibernate-core/src/main/java/org/hibernate/query/sqm/tree/spi/select/SqmQuerySpec.java:549
@Nonnull
@Override
public SqmQuerySpec<T> setFetch(@Nullable JpaExpression<? extends Number> fetch, FetchClauseType fetchClauseType) {
setFetchExpression( (SqmExpression<? extends Number>) fetch, fetchClauseType );
return this;
}
@Override
public void validateQueryStructureAndFetchOwners() {
validateFetchOwners();
}
public void validateFetchOwners() {
if ( getFromClause() != null ) {
final Set<SqmFrom<?, ?>> selectedFromSet;
final var roots = getFromClause().getRoots();
if ( selectClause.getSelections().isEmpty() ) {
if ( isEmpty( roots ) ) {
throw new SemanticException( "No query roots were specified" );
}
else {
selectedFromSet = singleton( roots.get( 0 ) );
}
}
else {
selectedFromSet = newSetFromMap( new IdentityHashMap<>( selectClause.getSelections().size() ) );
for ( var selection : selectClause.getSelections() ) {
collectSelectedFromSet( selectedFromSet, selection.getSelectableNode() );
}
}
for ( var root : roots ) {
validateFetchOwners( selectedFromSet, root );
for ( var sqmTreat : root.getSqmTreats() ) {
validateFetchOwners( selectedFromSet, sqmTreat );
}
}View on GitHub (pinned to fad1729dce)
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.
When it happens
Trigger: The query spec is validated or resolved while containing no FROM roots at all.
Common situations: Building a criteria query and never calling from(); add at least one root entity.
AI-assisted analysis of hibernate/hibernate-orm@fad1729dce (2026-08-22).
Data as JSON: /api/errors/bbd42ba87f24b897.
Report an issue: GitHub.