hibernate/hibernate-orm · error · QueryException
Query defined multiple roots
Error message
Query defined multiple roots
What it means
Error "Query defined multiple roots" thrown in hibernate/hibernate-orm.
Source
Thrown at hibernate-core/src/main/java/org/hibernate/query/specification/internal/SelectionSpecificationImpl.java:409
);
}
}
/**
* Used during construction. Mainly used to group extracting and
* validating the root.
*/
@Nonnull
private SqmRoot<? extends T> extractRoot(
@Nonnull SqmSelectStatement<T> sqmStatement,
@Nonnull Class<T> resultType,
@Nonnull String hql) {
final var sqmRoots = sqmStatement.getQuerySpec().getRoots();
if ( sqmRoots.isEmpty() ) {
throw new QueryException( "Query did not define any roots", hql );
}
if ( sqmRoots.size() > 1 ) {
throw new QueryException( "Query defined multiple roots", hql );
}
final var sqmRoot = sqmRoots.iterator().next();
return validateRoot( sqmRoot, resultType, hql );
// for later, to support select lists
//validateResultType( sqmStatement, sqmRoot, resultType, hql );
}
@Nonnull
private SqmRoot<? extends T> validateRoot(
@Nonnull SqmRoot<?> sqmRoot,
@Nonnull Class<T> resultType,
@Nonnull String hql) {
final var javaType = sqmRoot.getJavaType();
if ( javaType != null
&& !Map.class.isAssignableFrom( javaType )
&& !resultType.isAssignableFrom( javaType ) ) {
throw new QueryException(View on GitHub (pinned to fad1729dce)
Solutions
- The query defined multiple roots where one is required. Use a single root or an explicit result type.
When it happens
Trigger: The query structure does not meet the single-root/single-select-item requirement: Query defined multiple roots
Common situations: Key-based pagination or Specifications applied to queries with zero/multiple roots or multi-item select lists.
AI-assisted analysis of hibernate/hibernate-orm@fad1729dce (2026-08-22).
Data as JSON: /api/errors/fc92d2e71a7a722e.
Report an issue: GitHub.