alibaba/spring-ai-alibaba · error · IllegalArgumentException
Dataset not found:
Error message
Dataset not found:
What it means
Thrown by DatasetVersionServiceImpl.create() when the parent dataset referenced by request.getDatasetId() does not exist (datasetMapper.selectById returns null). Versions can only be created for an existing dataset.
Solutions
- Verify the dataset exists via the dataset get/list API before creating a version
- Create the dataset first if it does not exist
- Check the datasetId value (not a version id) is being sent
- Confirm both operations run against the same database/environment
Example fix
// before
DatasetVersion v = datasetVersionService.create(req); // req.datasetId = 123 (never created)
// after
Dataset d = datasetService.getById(req.getDatasetId());
if (d == null) { d = datasetService.create(newDatasetRequest); req.setDatasetId(d.getId()); }
DatasetVersion v = datasetVersionService.create(req); Defensive patterns
Strategy: validation
Validate before calling
if (req.getDatasetId() == null || datasetService.getById(req.getDatasetId()) == null) { throw new BusinessException("parent dataset missing"); } Type guard
boolean canCreateVersion(Long datasetId) { return datasetId != null && datasetService.getById(datasetId) != null; } Try / catch
try { versionService.create(req); } catch (IllegalArgumentException e) { if (e.getMessage().startsWith("Dataset not found")) { createDatasetThenVersion(req); } else { throw e; } } Prevention
- Create the parent dataset before creating versions in scripts
- Verify ids against the live environment, not copied test values
- Use the same DB profile for dataset and version operations
When it happens
Trigger: Creating a version for a datasetId that was deleted, never created, or belongs to another environment/database.
Common situations: Client caches a dataset id after the dataset was removed; datasetId/versionId confusion; dev-vs-prod database mismatch; bulk-import scripts with fabricated ids.
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/d9ce0677c363d2bd.
Report an issue: GitHub.
Appendix: source
Thrown at spring-ai-alibaba-admin/spring-ai-alibaba-admin-server-start/src/main/java/com/alibaba/cloud/ai/studio/admin/service/impl/DatasetVersionServiceImpl.java:48
public class DatasetVersionServiceImpl implements DatasetVersionService {
private final DatasetVersionMapper datasetVersionMapper;
private final DatasetMapper datasetMapper;
private final ExperimentMapper experimentMapper;
@Override
@Transactional
public DatasetVersion create(DatasetVersionCreateRequest request) {
log.info("Creating dataset version: {}", request);
// Validate request
if (request.getDatasetId() == null) {
throw new IllegalArgumentException("Dataset ID cannot be null");
}
//检查 dataset是否存在
if (datasetMapper.selectById(request.getDatasetId()) == null) {
throw new IllegalArgumentException("Dataset not found: " + request.getDatasetId());
}
// 获取当前最大的version
DatasetVersionDO latestDatasetVersionDO = datasetVersionMapper.selectLatestVersion(request.getDatasetId());
String currentVersion = Objects.isNull(latestDatasetVersionDO)?null:latestDatasetVersionDO.getVersion();
// Generate version number
String versionNumber = VersionUtils.generateVersionNumber(currentVersion);
// Build entity
DatasetVersionDO datasetVersionDO = DatasetVersionDO.builder()
.datasetId(request.getDatasetId())
.version(versionNumber)
.description(request.getDescription())
.dataCount(request.getDatasetItems().size())
.createTime(LocalDateTime.now())View on GitHub (pinned to f82da0b50f)