{"record":{"id":"c3a2384f12c2bf1f","repo":"theonedev/onedev","slug":"cannot-order-by-field-fieldname-c3a238","errorCode":null,"errorMessage":"\"Cannot order by field: \" + fieldName","messagePattern":"\"Cannot order by field: \" \\+ fieldName","errorType":"exception","errorClass":"ExplicitException","httpStatus":null,"severity":"error","filePath":"server-core/src/main/java/io/onedev/server/search/entity/pullrequest/PullRequestQuery.java","lineNumber":454,"sourceCode":"\t\t\t\t\t\treturn new AndCriteria<>(childCriterias);\n\t\t\t\t\t}\n\n\t\t\t\t\t@Override\n\t\t\t\t\tpublic Criteria<PullRequest> visitNotCriteria(NotCriteriaContext ctx) {\n\t\t\t\t\t\treturn new NotCriteria<>(visit(ctx.criteria()));\n\t\t\t\t\t}\n\n\t\t\t\t}.visit(criteriaContext);\n\t\t\t} else {\n\t\t\t\trequestCriteria = null;\n\t\t\t}\n\n\t\t\tList<EntitySort> requestSorts = new ArrayList<>();\n\t\t\tfor (OrderContext order : queryContext.order()) {\n\t\t\t\tString fieldName = getValue(order.Quoted().getText());\n\t\t\t\tvar sortField = SORT_FIELDS.get(fieldName);\n\t\t\t\tif (sortField == null)\n\t\t\t\t\tthrow new ExplicitException(\"Cannot order by field: \" + fieldName);\n\n\t\t\t\tEntitySort requestSort = new EntitySort();\n\t\t\t\trequestSort.setField(fieldName);\n\t\t\t\tif (order.direction != null) {\n\t\t\t\t\tif (order.direction.getText().equals(\"desc\"))\n\t\t\t\t\t\trequestSort.setDirection(DESCENDING);\n\t\t\t\t\telse\n\t\t\t\t\t\trequestSort.setDirection(ASCENDING);\n\t\t\t\t} else {\n\t\t\t\t\trequestSort.setDirection(sortField.getDefaultDirection());\n\t\t\t\t}\n\t\t\t\trequestSorts.add(requestSort);\n\t\t\t}\n\n\t\t\treturn new PullRequestQuery(requestCriteria, requestSorts);\n\t\t} else {\n\t\t\treturn new PullRequestQuery();\n\t\t}","sourceCodeStart":436,"sourceCodeEnd":472,"githubUrl":"https://github.com/theonedev/onedev/blob/d44925c47c37992c828ea673a5f9620539bc3ff2/server-core/src/main/java/io/onedev/server/search/entity/pullrequest/PullRequestQuery.java#L436-L472","documentation":"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.","triggerScenarios":"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).","commonSituations":"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).","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."],"exampleFix":"// before\nPullRequestQuery.parse(\"order by \\\"submitter\\\"\"); // not sortable\n// after\nPullRequestQuery.parse(\"order by \\\"submit date\\\" desc\");","handlingStrategy":"validation","validationCode":"Set<String> SORTABLE = Set.of(\"number\",\"title\",\"submit date\",\"last activity\",\"close date\");\nif (!SORTABLE.contains(orderField))\n    throw new IllegalArgumentException(\"Cannot order by field: \" + orderField);","typeGuard":"boolean isSortablePrField(String f) { return SORTABLE.contains(f); }","tryCatchPattern":"try {\n    PullRequestQuery.parse(query);\n} catch (ExplicitException e) {\n    if (e.getMessage().startsWith(\"Cannot order by field\"))\n        query = stripOrderBy(query); // drop invalid order clause\n    throw e;\n}","preventionTips":["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"],"tags":["query-parser","onedev","sorting"],"backgroundTag":"invalid-query-parameter","analyzedSha":"d44925c47c37992c828ea673a5f9620539bc3ff2","analyzedAt":"2026-09-06T07:18:27.995Z","contentChangedAt":"2026-09-06T07:18:27.995Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}