theonedev/onedev · error · ExplicitException
Cannot order by field:
Error message
Cannot order by field:
What it means
IssueQuery.parse validates the 'order by' field name against the set of sortable SORT_FIELDS. If the field is not a known sort field and (in validate mode) is not a custom field spec of type ChoiceField, DateField, DateTimeField, IntegerField, or IterationChoiceField, an ExplicitException is thrown naming the offending field.
Source
Thrown at server-core/src/main/java/io/onedev/server/search/entity/issue/IssueQuery.java:533
public Criteria<Issue> visitNotCriteria(NotCriteriaContext ctx) {
return new NotCriteria<>(visit(ctx.criteria()));
}
}.visit(criteriaContext);
} else {
issueCriteria = null;
}
List<EntitySort> issueSorts = new ArrayList<>();
for (OrderContext order : queryContext.order()) {
var fieldName = getValue(order.Quoted().getText());
var sortField = SORT_FIELDS.get(fieldName);
if (validate && sortField == null) {
FieldSpec fieldSpec = getGlobalIssueSetting().getFieldSpec(fieldName);
if (validate && !(fieldSpec instanceof ChoiceField) && !(fieldSpec instanceof DateField)
&& !(fieldSpec instanceof DateTimeField) && !(fieldSpec instanceof IntegerField)
&& !(fieldSpec instanceof IterationChoiceField)) {
throw new ExplicitException("Cannot order by field: " + fieldName);
}
}
EntitySort issueSort = new EntitySort();
issueSort.setField(fieldName);
if (order.direction != null) {
if (order.direction.getText().equals("desc"))
issueSort.setDirection(DESCENDING);
else
issueSort.setDirection(ASCENDING);
} else if (sortField != null) {
issueSort.setDirection(sortField.getDefaultDirection());
} else {
issueSort.setDirection(ASCENDING);
}
issueSorts.add(issueSort);
}
View on GitHub (pinned to d44925c47c)
Solutions
- Correct the field name in the 'order by' clause to a valid sortable issue field.
- Check the project's issue setting to confirm the custom field exists and is of an orderable type (choice, date, date-time, integer, iteration).
- Remove the 'order by' clause if sorting is not needed.
- Parse with validation disabled if the field validity is checked elsewhere.
Example fix
// before "order by Priority" // after (case/type-correct field, or a built-in sortable field) "order by priority" // or: "order by Number"
Defensive patterns
Strategy: validation
Validate before calling
// Validate order-by field before parsing
var sortable = Set.of("number", "priority", "submitDate", "status", "title", "updateDate");
String field = extractOrderByField(query);
if (field != null && !sortable.contains(field.toLowerCase())) {
throw new IllegalArgumentException("Cannot order by field: " + field);
} Try / catch
// catch ExplicitException from query parse
try {
IssueQuery query = IssueQuery.parse(project, sortField, option);
} catch (ExplicitException e) {
showQueryError(e.getMessage());
} Prevention
- Keep an allowlist of sortable fields in query-builder UIs.
- Verify custom field types support ordering before offering them in sort pickers.
- Test saved queries after issue-setting changes.
When it happens
Trigger: Parsing an issue query with an 'order by <fieldName>' clause where fieldName is not a built-in sortable field and not an orderable custom field (choice/date/integer/iteration), with validation enabled.
Common situations: Typo in the sort field name; using a text or user custom field in order by; copying a query that sorts by a field type that is not orderable in this project's issue setting.
Understand the failure class
Background: "Must be a positive integer", "Invalid value", "Unsupported": the invalid-argument-value error family, when a library rejects the value you pass — this error's family across 35 libraries.
Related errors
- Field not found:
- Unexpected operator:
- Title is required
- Count should not be greater than ${RestConstants.MAX_PAGE_SI
- ${e.getMessage()}
AI-assisted analysis of theonedev/onedev@d44925c47c (2026-09-06).
Data as JSON: /api/errors/d628212c79981212.
Report an issue: GitHub.