hibernate/hibernate-orm · error · IllegalArgumentException
Invalid query type provided to subquery 'with' method, expec
Error message
Invalid query type provided to subquery 'with' method, expecting a subquery with the same parent to use as CTE
What it means
Error "Invalid query type provided to subquery 'with' method, expecting a subquery with the same parent to use as CTE" thrown in hibernate/hibernate-orm.
Source
Thrown at hibernate-core/src/main/java/org/hibernate/query/sqm/tree/spi/select/SqmSubQuery.java:212
? cteContainer.getCteStatement( cteLabel )
: cteCriteria;
}
@Override
public <X> @Nullable JpaCteCriteria<X> getCteCriteria(@Nonnull String cteName) {
final JpaCteCriteria<X> cteCriteria = super.getCteCriteria( cteName );
return cteCriteria == null && parent instanceof JpaCteContainer cteContainer
? cteContainer.getCteCriteria( cteName )
: cteCriteria;
}
@Override
protected <X> JpaCteCriteria<X> withInternal(String name, AbstractQuery<X> criteria) {
if ( criteria instanceof SqmSubQuery<X> sqmSubQuery && sqmSubQuery.getParent() == parent ) {
return super.withInternal( name, criteria );
}
else {
throw new IllegalArgumentException(
"Invalid query type provided to subquery 'with' method, " +
"expecting a subquery with the same parent to use as CTE"
);
}
}
@Override
protected <X> JpaCteCriteria<X> withInternal(
String name,
AbstractQuery<X> baseCriteria,
boolean unionDistinct,
Function<JpaCteCriteria<X>, AbstractQuery<X>> recursiveCriteriaProducer) {
if ( baseCriteria instanceof SqmSubQuery<X> sqmSubQuery && sqmSubQuery.getParent() == parent ) {
return super.withInternal( name, baseCriteria, unionDistinct, recursiveCriteriaProducer );
}
else {
throw new IllegalArgumentException(
"Invalid query type provided to subquery 'with' method, " +View on GitHub (pinned to fad1729dce)
Solutions
- Pass a subquery that has the same parent query as the one 'with' is called on.
- Create the CTE subquery via Subquery#with on a subquery obtained from the same parent, not an unrelated one.
- If the CTE belongs to the root query, register it on the root query's 'with' method instead.
When it happens
Trigger: An incompatible query (wrong parent or root query) is passed to a subquery's 'with' method for a CTE.
Common situations: Reusing a subquery from another parent as CTE; create the CTE subquery from the same parent.
AI-assisted analysis of hibernate/hibernate-orm@fad1729dce (2026-08-22).
Data as JSON: /api/errors/c1fc9bb95c0db280.
Report an issue: GitHub.