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

  1. Order by an attribute path of the root entity instead of a select item.
  2. 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.