flowable/flowable-engine · error · FlowableIllegalArgumentException
parentDeploymentIdLike is null
Error message
parentDeploymentIdLike is null
What it means
DmnDeploymentQueryImpl.parentDeploymentIdLike(String) throws FlowableIllegalArgumentException when the like-pattern argument is null. Like-criteria in Flowable queries must be a non-null string (e.g. "%abc%"), since it is substituted directly into a SQL LIKE clause; a null value is rejected up front.
Source
Thrown at modules/flowable-dmn-engine/src/main/java/org/flowable/dmn/engine/impl/DmnDeploymentQueryImpl.java:139
@Override
public DmnDeploymentQueryImpl deploymentWithoutTenantId() {
this.withoutTenantId = true;
return this;
}
@Override
public DmnDeploymentQueryImpl parentDeploymentId(String parentDeploymentId) {
if (parentDeploymentId == null) {
throw new FlowableIllegalArgumentException("parentDeploymentId is null");
}
this.parentDeploymentId = parentDeploymentId;
return this;
}
@Override
public DmnDeploymentQueryImpl parentDeploymentIdLike(String parentDeploymentIdLike) {
if (parentDeploymentIdLike == null) {
throw new FlowableIllegalArgumentException("parentDeploymentIdLike is null");
}
this.parentDeploymentIdLike = parentDeploymentIdLike;
return this;
}
@Override
public DmnDeploymentQueryImpl decisionKey(String key) {
if (key == null) {
throw new FlowableIllegalArgumentException("key is null");
}
this.decisionKey = key;
return this;
}
@Override
public DmnDeploymentQueryImpl decisionKeyLike(String keyLike) {
if (keyLike == null) {
throw new FlowableIllegalArgumentException("keyLike is null");View on GitHub (pinned to d6d39ce1c6)
Solutions
- Pass a valid LIKE pattern string (use % wildcards as needed) instead of null
- Omit the parentDeploymentIdLike(...) call when the filter is absent
- If the caller provides a raw value, wrap it into a pattern explicitly, e.g. "%" + value + "%", and validate non-null first
Example fix
// before
String filter = userInput.get("parentDeploymentId");
query.parentDeploymentIdLike(filter);
// after
String filter = userInput.get("parentDeploymentId");
if (filter != null && !filter.isEmpty()) {
query.parentDeploymentIdLike("%" + filter + "%");
} Defensive patterns
Strategy: validation
Validate before calling
if (parentDeploymentIdLike == null || parentDeploymentIdLike.isEmpty()) { throw new IllegalArgumentException("parentDeploymentIdLike pattern required"); } Type guard
boolean isLikePattern(String p) { return p != null && !p.isEmpty(); } Try / catch
try { query.parentDeploymentIdLike(pattern); } catch (FlowableIllegalArgumentException e) { log.warn("Ignoring like filter: {}", e.getMessage()); } Prevention
- Normalize empty user input to 'no filter' before building queries
- Explicitly wrap raw values into LIKE patterns ("%value%") instead of passing through possibly-null input
When it happens
Trigger: Calling dmnRepositoryService.createDeploymentQuery().parentDeploymentIdLike(null), usually when the pattern is built by string concatenation from user input or an optional filter that was never set.
Common situations: Search/filter UIs where the user left the parent-deployment filter empty; building a LIKE pattern from a variable that failed to initialize; migrating code from another engine API that tolerated null like-values.
Related errors
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/70fe9ac7d3a0c2b3.
Report an issue: GitHub.