Annotation Interface OrderBy
Annotates a repository method to request sorting of results.
When multiple OrderBy
annotations are specified on a
repository method, the precedence for sorting follows the order
in which the OrderBy
annotations are specified,
and after that follows any sort criteria that are supplied
dynamically by Sort
parameters or by any Order
parameter.
For example, the following sorts first by the
lastName
attribute in ascending order,
and secondly, for entities with the same lastName
,
it then sorts by the firstName
attribute,
also in ascending order. For entities with the same
lastName
and firstName
.
@OrderBy("lastName") @OrderBy("firstName") @OrderBy("id") Person[] findByZipCode(int zipCode, PageRequest pageRequest);
The interpretation of ascending and descending order is determined by the database, but, in general:
- ascending order for numeric values is the natural order with smaller numbers before larger numbers,
- ascending order for string values is lexicographic order with
A
beforeZ
, and - ascending order for boolean values places
false
beforetrue
.
A repository method with an @OrderBy
annotation must not
have:
- the Query by Method Name
OrderBy
keyword in its name, nor - a
@Query
annotation specifying a JDQL or JPQL query with anORDER BY
clause.
A Jakarta Data provider is permitted to reject such a repository
method declaration at compile time or to implement the method to
throw UnsupportedOperationException
.
A repository method will fail with a
DataException
or a more specific subclass if the database is incapable of
ordering with the requested sort criteria.
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic @interface
Enables multipleOrderBy
annotations on the method. -
Required Element Summary
-
Optional Element Summary
Modifier and TypeOptional ElementDescriptionboolean
Indicate whether to use descending order when sorting by this attribute.boolean
Indicates whether or not to request case insensitive ordering from a database with case sensitive collation.
-
Element Details
-
value
String valueEntity attribute name to sort by.
For example,
@OrderBy("age") Stream<Person> findByLastName(String lastName);
- Returns:
- entity attribute name.
-
-
-
descending
boolean descendingIndicate whether to use descending order when sorting by this attribute.
The default value of
false
means ascending sort.- Returns:
- whether to use descending (versus ascending) order.
- Default:
- false
-
ignoreCase
boolean ignoreCaseIndicates whether or not to request case insensitive ordering from a database with case sensitive collation. A database with case insensitive collation performs case insensitive ordering regardless of the requested
ignoreCase
value.The default value is
false
.- Returns:
- whether or not to request case insensitive sorting for the property.
- Default:
- false
-