theonedev/onedev · error · ExplicitException
"Cannot order by field: " + fieldName
Error message
"Cannot order by field: " + fieldName
What it means
When parsing the 'order by' clause, PullRequestQuery looks the field name up in PullRequest.SORT_FIELDS; any field not registered as sortable for pull requests throws this ExplicitException. Only whitelisted sortable fields (e.g. number, title, submit date, last activity, close date) may be used in order by.
Source
Thrown at server-core/src/main/java/io/onedev/server/search/entity/pullrequest/PullRequestQuery.java:454
return new AndCriteria<>(childCriterias);
}
@Override
public Criteria<PullRequest> visitNotCriteria(NotCriteriaContext ctx) {
return new NotCriteria<>(visit(ctx.criteria()));
}
}.visit(criteriaContext);
} else {
requestCriteria = null;
}
List<EntitySort> requestSorts = new ArrayList<>();
for (OrderContext order : queryContext.order()) {
String fieldName = getValue(order.Quoted().getText());
var sortField = SORT_FIELDS.get(fieldName);
if (sortField == null)
throw new ExplicitException("Cannot order by field: " + fieldName);
EntitySort requestSort = new EntitySort();
requestSort.setField(fieldName);
if (order.direction != null) {
if (order.direction.getText().equals("desc"))
requestSort.setDirection(DESCENDING);
else
requestSort.setDirection(ASCENDING);
} else {
requestSort.setDirection(sortField.getDefaultDirection());
}
requestSorts.add(requestSort);
}
return new PullRequestQuery(requestCriteria, requestSorts);
} else {
return new PullRequestQuery();
}View on GitHub (pinned to d44925c47c)
Solutions
- Use one of the supported sort fields (check SORT_FIELDS: e.g. number, title, submitDate, lastActivity, closeDate).
- Correct the field spelling to the exact name defined in PullRequest.SORT_FIELDS.
- Remove the order by clause to use default ordering.
- If you need sorting by a non-sortable field, filter client-side or request the field be added upstream.
Example fix
// before
PullRequestQuery.parse("order by \"submitter\""); // not sortable
// after
PullRequestQuery.parse("order by \"submit date\" desc"); Defensive patterns
Strategy: validation
Validate before calling
Set<String> SORTABLE = Set.of("number","title","submit date","last activity","close date");
if (!SORTABLE.contains(orderField))
throw new IllegalArgumentException("Cannot order by field: " + orderField); Type guard
boolean isSortablePrField(String f) { return SORTABLE.contains(f); } Try / catch
try {
PullRequestQuery.parse(query);
} catch (ExplicitException e) {
if (e.getMessage().startsWith("Cannot order by field"))
query = stripOrderBy(query); // drop invalid order clause
throw e;
} Prevention
- Only order by fields listed in the PR query help's sort section
- Validate order-by fields against SORT_FIELDS at composition time
- Beware criteria fields != sortable fields
When it happens
Trigger: A query containing 'order by <field>' where <field> is misspelled or is a queryable criteria field but not a sortable field (not present in SORT_FIELDS map).
Common situations: Ordering by a criteria-only field like 'submitter' or 'assignees'; typos like 'submitted date' instead of the exact sort field name; copying sort fields from other entities (issue/build queries).
Understand the failure class
Background: "Invalid query parameter" / "Failed to parse value of ...": fixing bad query string parameters across APIs — this error's family across 36 libraries.
Related errors
- Cannot order by field:
- Cannot order by field:
- "Unexpected operator: " + ctx.operator.getText()
- "Field not found: " + fieldName
- Issue schedule permission required to set iterations
AI-assisted analysis of theonedev/onedev@d44925c47c (2026-09-06).
Data as JSON: /api/errors/c3a2384f12c2bf1f.
Report an issue: GitHub.