flowable/flowable-engine · error · FlowableIllegalArgumentException

parentDeploymentIdLike is null

Error message

parentDeploymentIdLike is null

What it means

EventDeploymentQueryImpl.parentDeploymentIdLike() throws FlowableIllegalArgumentException when the given like-pattern string is null. Like-filters require a non-null pattern string because a null would be meaningless in the generated SQL LIKE clause. Passing an empty string is allowed; only null is rejected.

Solutions

  1. Null-check the pattern and only call parentDeploymentIdLike when it is non-null.
  2. If the filter must always apply, substitute a sensible default pattern such as "%" before the call.
  3. Fix the upstream source that returned null instead of an empty/default pattern.

Example fix

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

Strategy: validation

Validate before calling

if (parentDeploymentIdLike == null) { throw new IllegalStateException("parentDeploymentIdLike must not be null"); }
query.parentDeploymentIdLike(parentDeploymentIdLike);

Type guard

boolean hasPattern(String s) { return s != null; }

Try / catch

try {
    query.parentDeploymentIdLike(pattern);
} catch (FlowableIllegalArgumentException e) {
    log.warn("Null like-pattern for parentDeploymentIdLike", e);
}

Prevention

When it happens

Trigger: Calling eventDeploymentQuery().parentDeploymentIdLike(null), typically when the pattern is computed from user input, a template variable, or an optional config value that was never set.

Common situations: Building dynamic search screens where the 'like' filter is optional and the developer passes the raw (null) input instead of conditionally applying the filter; property placeholder that failed to resolve.

Related errors


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

Appendix: source

Thrown at modules/flowable-event-registry/src/main/java/org/flowable/eventregistry/impl/EventDeploymentQueryImpl.java:117

            throw new FlowableIllegalArgumentException("deploymentCategoryExclude is null");
        }
        this.categoryNotEquals = deploymentCategoryNotEquals;
        return this;
    }

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

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

    @Override
    public EventDeploymentQueryImpl deploymentWithoutTenantId() {
        this.withoutTenantId = true;
        return this;
    }

    @Override
    public EventDeploymentQueryImpl deploymentTenantId(String tenantId) {
        if (tenantId == null) {
            throw new FlowableIllegalArgumentException("deploymentTenantId is null");
        }
        this.tenantId = tenantId;
        return this;

View on GitHub (pinned to d6d39ce1c6)