flowable/flowable-engine · error · FlowableIllegalArgumentException

deploymentCategoryLike is null

Error message

deploymentCategoryLike is null

What it means

DeploymentQueryImpl.deploymentCategoryLike(String) throws FlowableIllegalArgumentException when the categoryLike argument is null. The filter is a SQL LIKE on the deployment category column; Flowable validates the argument at the builder call so a null never reaches the query execution.

Solutions

  1. Pass a non-null LIKE pattern such as "%myCategory%".
  2. Guard: if (categoryLike != null) query.deploymentCategoryLike(categoryLike).
  3. Omit the filter when no category pattern is available.

Example fix

// before
query.deploymentCategoryLike(categoryPattern);
// after
if (categoryPattern != null) {
    query.deploymentCategoryLike(categoryPattern);
}
Defensive patterns

Strategy: validation

Validate before calling

if (categoryPattern != null) {
    query.deploymentCategoryLike(categoryPattern);
}

Type guard

boolean hasCategoryPattern(String pattern) { return pattern != null && !pattern.isEmpty(); }

Try / catch

try {
    query.deploymentCategoryLike(categoryLike);
} catch (FlowableIllegalArgumentException e) {
    log.warn("Null categoryLike filter ignored", e);
}

Prevention

When it happens

Trigger: repositoryService.createDeploymentQuery().deploymentCategoryLike(null), e.g. when a wildcard category pattern comes from a null config value or unset request parameter.

Common situations: Category-based tenant/environment filtering where the pattern template was not filled in; copying query code and forgetting to supply the pattern.

Related errors


AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11). Data as JSON: /api/errors/fb4d67380aff042f. Report an issue: GitHub.

Appendix: source

Thrown at modules/flowable-engine/src/main/java/org/flowable/engine/impl/DeploymentQueryImpl.java:114

            throw new FlowableIllegalArgumentException("deploymentNameLike is null");
        }
        this.nameLike = nameLike;
        return this;
    }

    @Override
    public DeploymentQueryImpl deploymentCategory(String deploymentCategory) {
        if (deploymentCategory == null) {
            throw new FlowableIllegalArgumentException("deploymentCategory is null");
        }
        this.category = deploymentCategory;
        return this;
    }

    @Override
    public DeploymentQueryImpl deploymentCategoryLike(String categoryLike) {
        if (categoryLike == null) {
            throw new FlowableIllegalArgumentException("deploymentCategoryLike is null");
        }
        this.categoryLike = categoryLike;
        return this;
    }

    @Override
    public DeploymentQueryImpl deploymentCategoryNotEquals(String deploymentCategoryNotEquals) {
        if (deploymentCategoryNotEquals == null) {
            throw new FlowableIllegalArgumentException("deploymentCategoryExclude is null");
        }
        this.categoryNotEquals = deploymentCategoryNotEquals;
        return this;
    }

    @Override
    public DeploymentQueryImpl deploymentKey(String deploymentKey) {
        if (deploymentKey == null) {
            throw new FlowableIllegalArgumentException("deploymentKey is null");

View on GitHub (pinned to d6d39ce1c6)