# List Maintenance Get More

When a list is too large to send to the UI in one shot, there is the ability to get more rows.

An @List can simply have its order set (separate from any other Maintenance List Filter properties). Everything else is automated by the FW. There is no need to add special LAST_ fields to the annotation/service, nor even to add the parent's PKs.

The order of a maintenance's list can be given in two ways:

- The order can come from the domain _Impl class. However, this is limited as it may only use fields on the entity table itself (not even language properties).
- The order can be specified on the @List annotation as a string `orderBy`, written in hql form, using the special entity alias `this` to refer to the row (and `thisLang` to refer to the language row if one exists), and including any other aliases available from the `fromClause` property.

The list will retrieve rows in chunk sizes given by the size property on the @List annotation.

An example of using this filtering to join extra information is available on the class `MaintenanceObjectMaintenance`. Another example on a `ListService`, is available on the class `NavigationOptionMenuList`.

Besides using a MaintenanceListFilter and knowing how to deal with list get mores, lists in a page maintenance will automatically retrieve (and cache) the language row associated with the main row of the list. This helps the n+1 select problem (only a single SQL is issued, instead of the main one, plus an extra one for each of the rows' language row), and also provides the ability to have shorthand for the `orderBy` property of a list. If the order is simply by a language property, then you can reference it by `thisLang.property`, without having to supply a `filterClause`.

Parent topic: Maintaining Maintenance Classes for MOs