alibaba/spring-ai-alibaba · error · RuntimeException
数据集版本不存在:
Error message
数据集版本不存在:
What it means
DatasetItemServiceImpl.createFromTrace pushes trace-derived items into a dataset version; it loads the target DatasetVersionDO via datasetVersionMapper.selectById and throws this RuntimeException when the row is absent. The update of dataset items cannot proceed without an existing version.
Source
Thrown at spring-ai-alibaba-admin/spring-ai-alibaba-admin-server-start/src/main/java/com/alibaba/cloud/ai/studio/admin/service/impl/DatasetItemServiceImpl.java:79
List<DatasetItem> datasetItemList = request.getDataContent().stream().map(
dataContent -> {
DatasetItemDO datasetItemDO = DatasetItemDO.builder()
.datasetId(request.getDatasetId())
.dataContent(dataContent)
.columnsConfig(JSONObject.toJSONString(request.getColumnsConfig()))
.build();
datasetItemMapper.insert(datasetItemDO);
itemIds.add(datasetItemDO.getId());
return DatasetItem.fromDO(datasetItemDO);
}
).toList();
if (!itemIds.isEmpty()) {
// 更新数据集版本中的数据项列表
DatasetVersionDO datasetVersionDO = datasetVersionMapper.selectById(request.getDatasetVersionId());
if (datasetVersionDO == null) {
throw new RuntimeException("数据集版本不存在: " + request.getDatasetVersionId());
}
List<Long> datasetItems = CommonUtils.parseItemIds(datasetVersionDO.getDatasetItems());
datasetItems.addAll(itemIds);
datasetVersionMapper.updateDatasetItems(datasetVersionDO.getId(),
datasetItems.toString(),datasetItems.size()
);
}
return datasetItemList;
}
@Override
public PageResult<DatasetItem> list(DatasetItemListRequest request) {
log.info("根据数据集版本ID查询数据项列表: datasetVersionId={}, pageNumber={}, pageSize={}", request.getDatasetVersionId(), request.getPageNumber(), request.getPageSize());View on GitHub (pinned to f82da0b50f)
Solutions
- Verify the dataset version id exists: run SELECT * FROM dataset_version WHERE id = <id> (or check via admin UI)
- Create the dataset version first (or pick an existing version) before calling createFromTrace
- Fix the caller to pass the correct datasetVersionId from the current dataset's version list
- If versions are auto-cleaned, add existence handling in the caller to skip or recreate the version instead of failing
Example fix
// before datasetItemService.createFromTrace(req.withDatasetVersionId(999L)); // version deleted // after Long versionId = datasetVersionService.createVersion(datasetId); datasetItemService.createFromTrace(req.withDatasetVersionId(versionId));
Defensive patterns
Strategy: try-catch
Validate before calling
// Java: confirm the dataset version exists before importing trace items
if (datasetVersionMapper.selectById(request.getDatasetVersionId()) == null) {
throw new IllegalStateException("Dataset version not found: " + request.getDatasetVersionId());
} Type guard
boolean versionExists(DatasetVersionDO v) { return v != null; } Try / catch
try {
datasetItemService.createFromTrace(request);
} catch (RuntimeException e) {
if (e.getMessage().startsWith("数据集版本不存在")) {
// create the version or refresh the id, then retry
}
} Prevention
- Fetch datasetVersionId from the live version list of the dataset right before the call, never hardcode
- Watch for cascade deletes: when a dataset is removed, update or invalidate references in traces
- In multi-environment setups, never share record ids across dev/staging/prod databases
When it happens
Trigger: Calling createFromTrace with request.getDatasetVersionId() referencing a dataset version id that does not exist in the dataset_version table (already deleted, never created, or wrong id/type passed).
Common situations: A dataset version deleted (or cascade-deleted with its dataset) while traces still reference it; copying a request across environments (dev id used against prod DB); front-end sending a stale id after version regeneration; id passed as string vs numeric mismatch in the mapper.
Understand the failure class
Background: Record Not Found Errors: "not found", RecordNotFound, and "was not found" — what they mean and how to fix them — this error's family across 28 libraries.
Related errors
AI-assisted analysis of alibaba/spring-ai-alibaba@f82da0b50f (2026-09-09).
Data as JSON: /api/errors/b28d799c659c479d.
Report an issue: GitHub.