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.

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)

Solutions

  1. Verify the dataset exists via the dataset get/list API before creating a version
  2. Create the dataset first if it does not exist
  3. Check the datasetId value (not a version id) is being sent
  4. 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

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.