flowable/flowable-engine · error · FlowableIllegalArgumentException
nameLikeIgnoreCase is null
Error message
nameLikeIgnoreCase is null
What it means
Flowable throws FlowableIllegalArgumentException when processDefinitionNameLikeIgnoreCase(null) is called. Case-insensitive like filters must receive a concrete pattern string; null cannot be translated into a valid SQL LIKE clause. The check happens immediately in the query builder to fail fast.
Source
Thrown at modules/flowable-engine/src/main/java/org/flowable/engine/impl/ProcessDefinitionQueryImpl.java:148
throw new FlowableIllegalArgumentException("name is null");
}
this.name = name;
return this;
}
@Override
public ProcessDefinitionQueryImpl processDefinitionNameLike(String nameLike) {
if (nameLike == null) {
throw new FlowableIllegalArgumentException("nameLike is null");
}
this.nameLike = nameLike;
return this;
}
@Override
public ProcessDefinitionQueryImpl processDefinitionNameLikeIgnoreCase(String nameLikeIgnoreCase) {
if (nameLikeIgnoreCase == null) {
throw new FlowableIllegalArgumentException("nameLikeIgnoreCase is null");
}
this.nameLikeIgnoreCase = nameLikeIgnoreCase;
return this;
}
@Override
public ProcessDefinitionQueryImpl deploymentId(String deploymentId) {
if (deploymentId == null) {
throw new FlowableIllegalArgumentException("id is null");
}
this.deploymentId = deploymentId;
return this;
}
@Override
public ProcessDefinitionQueryImpl deploymentIds(Set<String> deploymentIds) {
if (deploymentIds == null) {
throw new FlowableIllegalArgumentException("ids are null");View on GitHub (pinned to d6d39ce1c6)
Solutions
- Provide a non-null pattern, e.g. processDefinitionNameLikeIgnoreCase("%report%").
- Conditionally apply the filter only when the value is non-null.
- Normalize nulls to a sentinel before calling (though skipping the filter is usually better than a catch-all pattern).
Example fix
// before
query.processDefinitionNameLikeIgnoreCase(searchTerm);
// after
if (searchTerm != null && !searchTerm.isEmpty()) {
query.processDefinitionNameLikeIgnoreCase("%" + searchTerm.toLowerCase() + "%");
} Defensive patterns
Strategy: validation
Validate before calling
if (nameLikeIgnoreCase != null && !nameLikeIgnoreCase.isEmpty()) {
query.processDefinitionNameLikeIgnoreCase(nameLikeIgnoreCase.toLowerCase());
} Type guard
boolean hasText(String s) { return s != null && !s.trim().isEmpty(); } Try / catch
try {
query.processDefinitionNameLikeIgnoreCase(term);
} catch (org.flowable.common.engine.api.FlowableIllegalArgumentException e) {
log.warn("Ignoring null/invalid nameLikeIgnoreCase filter");
} Prevention
- Default optional search terms to empty/null-safe handling in your DTO layer
- Lowercase patterns yourself so behavior is predictable
- Add unit tests covering null filter inputs for every query builder you use
When it happens
Trigger: Calling repositoryService.createProcessDefinitionQuery().processDefinitionNameLikeIgnoreCase(null), typically when the ignore-case variant was substituted for processDefinitionNameLike and the source variable was never set.
Common situations: Migrating queries to case-insensitive matching and forgetting that the new method has the same null guard; optional search boxes whose value is null rather than empty string; DTOs with unpopulated filter fields.
Related errors
- Error retrieving app engine info
- No deployment id available
- No resource name available
- variableNames are null or empty
- nameLike is null
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/a6f8d87f6423e6a0.
Report an issue: GitHub.