hibernate/hibernate-orm · error · IllegalArgumentException
Cannot order by a select item in an entity query
Error message
Cannot order by a select item in an entity query
What it means
Error "Cannot order by a select item in an entity query" thrown in hibernate/hibernate-orm.
Source
Thrown at hibernate-core/src/main/java/org/hibernate/query/Order.java:350
* @since 7.0
*/
default Order<X> ignoringCaseIf(boolean ignoreCase) {
return ignoreCase ? ignoringCase() : this;
}
/**
* Apply this order to the given root entity of the given
* {@linkplain CriteriaQuery criteria query}.
*
* @since 8.0
*/
@Incubating
default void apply(CriteriaQuery<?> query, Root<?> root, CriteriaBuilder builder) {
requireNonNull( query, "missing query" );
requireNonNull( root, "missing root" );
requireNonNull( builder, "missing builder" );
if ( entityClass() == null ) {
throw new IllegalArgumentException( "Cannot order by a select item in an entity query" );
}
var order = order( expression( root, builder ), builder );
final var orders = new ArrayList<>( query.getOrderList() );
orders.add( order );
query.orderBy( orders );
}
private jakarta.persistence.criteria.Order order(
Expression<?> expression,
CriteriaBuilder builder) {
return direction() == DESCENDING
? builder.desc( expression, nullPrecedence() )
: builder.asc( expression, nullPrecedence() );
}
private Expression<?> expression(Root<?> root, CriteriaBuilder builder) {
final var path = path( root, attributeName() );
return caseSensitive() ? path : builder.lower( path.as( String.class ) );View on GitHub (pinned to fad1729dce)
Solutions
- Order by an attribute path of the root entity instead of a select item.
- Use a subquery or explicit path expression for the ordering.
When it happens
Trigger: The HQL/JPQL query violates a structural language rule.
Common situations: Writing queries with missing select/from, mismatched group by positions, or invalid ordering constructs.
AI-assisted analysis of hibernate/hibernate-orm@fad1729dce (2026-08-22).
Data as JSON: /api/errors/94ad0cc0ee463e6b.
Report an issue: GitHub.