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

  1. Add at least one root to the query: criteria.from(Entity.class) for criteria, or a FROM clause for HQL.
  2. 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.