{"record":{"id":"28829e672f7aa2bd","repo":"alibaba/spring-ai-alibaba","slug":"id-28829e","errorCode":null,"errorMessage":"未找到ID为{}的评测集","messagePattern":"未找到ID为(.+?)的评测集","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"spring-ai-alibaba-admin/spring-ai-alibaba-admin-server-start/src/main/java/com/alibaba/cloud/ai/studio/admin/service/impl/DatasetServiceImpl.java","lineNumber":112,"sourceCode":"        \n\n        PageResult<Dataset> result = new PageResult<>(\n                (long) total, \n                (long) pageNumber, \n                (long) pageSize,\n                datasetList\n        );\n        \n        return result;\n    }\n\n    @Override\n    public Dataset getById(Long id) {\n        log.info(\"查询评测集详情: {}\", id);\n        DatasetDO datasetDO = datasetMapper.selectById(id);\n            \n        if (datasetDO == null) {\n            log.warn(\"未找到ID为{}的评测集\", id);\n            return null;\n        }\n        Dataset dataset = Dataset.fromDO(datasetDO);\n\n        DatasetVersionDO datasetVersionDO = datasetVersionMapper.selectLatestVersion(dataset.getId());\n\n        if(Objects.nonNull(datasetVersionDO)){\n            dataset.setDataCount(datasetVersionDO.getDataCount());\n            dataset.setLatestVersion(datasetVersionDO.getVersion());\n            dataset.setLatestVersionId(datasetVersionDO.getId());\n        }\n        \n        return dataset;\n    }\n\n    @Override\n    public Dataset update(DatasetUpdateRequest request) {\n        log.info(\"更新评测集: {}\", request);","sourceCodeStart":94,"sourceCodeEnd":130,"githubUrl":"https://github.com/alibaba/spring-ai-alibaba/blob/f82da0b50f35744c13968191be2b1cd2452ef550/spring-ai-alibaba-admin/spring-ai-alibaba-admin-server-start/src/main/java/com/alibaba/cloud/ai/studio/admin/service/impl/DatasetServiceImpl.java#L94-L130","documentation":"DatasetServiceImpl.getById loads a DatasetDO by primary key. When no row matches, it logs '未找到ID为{}的评测集' (no dataset with this id) and returns null rather than throwing; callers must null-check or they will NPE on the returned value.","triggerScenarios":"getById(id) with an id not present in the dataset table — deleted dataset, wrong id, id from a different environment, or the row exists but selectById is scoped/filtered.","commonSituations":"Frontend holding a link to a deleted evaluation dataset; hardcoded test ids; multi-tenant filtering hiding the row; dev/prod database mix-up.","solutions":["Null-check the return value before use","Verify the dataset id against the actual table (SELECT * FROM dataset WHERE id=...)","Return a proper not-found signal (Optional or 404) from the API layer instead of null","Confirm you are querying the intended database/schema/environment"],"exampleFix":"// before\nDataset d = datasetService.getById(id);\nd.getVersions(); // NPE when not found\n// after\nDataset d = datasetService.getById(id);\nif (d == null) { throw new ResponseStatusException(HttpStatus.NOT_FOUND, \"dataset not found: \" + id); }","handlingStrategy":"type-guard","validationCode":"if (id == null || id <= 0) throw new IllegalArgumentException(\"dataset id must be a positive number\");\n// optionally: SELECT count(*) FROM dataset WHERE id = ? first","typeGuard":"Dataset d = datasetService.getById(id);\nif (d == null) { /* not found: return 404 or create */ }","tryCatchPattern":"Dataset d = datasetService.getById(id);\nif (d == null) {\n    throw new ResponseStatusException(HttpStatus.NOT_FOUND, \"dataset \" + id + \" not found\");\n}","preventionTips":["Null-check every getById result from DatasetService","Regenerate links after a dataset is deleted; purge stale references","Confirm environment/database before using a copied dataset id","Prefer an API that returns Optional or throws not-found instead of null"],"tags":["dataset","not-found","null-return","database"],"backgroundTag":"record-not-found","analyzedSha":"f82da0b50f35744c13968191be2b1cd2452ef550","analyzedAt":"2026-09-09T15:32:42.421Z","contentChangedAt":"2026-09-09T15:32:42.421Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}