hibernate/hibernate-orm · error · IllegalSelectQueryException
MutationQuery cannot be treated as SelectionQuery
Error message
MutationQuery cannot be treated as SelectionQuery
What it means
Error "MutationQuery cannot be treated as SelectionQuery" thrown in hibernate/hibernate-orm.
Source
Thrown at hibernate-core/src/main/java/org/hibernate/query/internal/MutationQueryImpl.java:113
SharedSessionContractImplementor session) {
super( session );
this.hql = hql;
this.queryStringCacheKey = hql;
this.sqm = SqmUtil.asDmlStatement( hqlInterpretation.getSqmStatement(), hql );
this.targetType = determineTargetType( targetType, sqm.getTarget().getNodeJavaType().getJavaTypeClass() );
this.parameterMetadata = hqlInterpretation.getParameterMetadata();
this.domainParameterXref = hqlInterpretation.getDomainParameterXref();
this.parameterBindings = parameterMetadata.createBindings( session.getFactory() );
validateQuery( sqm, hql );
}
@Override
@Nonnull
public <R> SelectionQueryImplementor<R> withResultSetMapping(@Nonnull ResultSetMapping<R> mapping) {
throw new IllegalSelectQueryException( "MutationQuery cannot be treated as SelectionQuery", hql );
}
private static <R> void validateQuery(SqmDmlStatement<R> sqm, String hql) {
if ( sqm instanceof AbstractSqmDmlStatement<R> abstractSqm ) {
abstractSqm.validate( hql );
}
}
@SuppressWarnings("unchecked")
private static <X> Class<X> determineTargetType(Class<?> providedType, Class<?> sqmTargetType) {
if ( providedType != null && !Object.class.equals( providedType ) ) {
return (Class<X>) providedType;
}
else {
return (Class<X>) sqmTargetType;
}
}
View on GitHub (pinned to fad1729dce)
Solutions
- A mutation (insert/update/delete) query cannot be used as a selection query. Use a select query for reading results.
When it happens
Trigger: A selection-only operation is invoked on a mutation (insert/update/delete) query: MutationQuery cannot be treated as SelectionQuery
Common situations: Calling getResultList()/scroll()/unwrap(SelectionQuery) on a Query created from an update/delete/insert HQL statement, or vice versa.
AI-assisted analysis of hibernate/hibernate-orm@fad1729dce (2026-08-22).
Data as JSON: /api/errors/718d8f7c2f5650f2.
Report an issue: GitHub.