{"record":{"id":"70fe9ac7d3a0c2b3","repo":"flowable/flowable-engine","slug":"parentdeploymentidlike-is-null-70fe9a","errorCode":null,"errorMessage":"parentDeploymentIdLike is null","messagePattern":"parentDeploymentIdLike is null","errorType":"validation","errorClass":"FlowableIllegalArgumentException","httpStatus":null,"severity":"error","filePath":"modules/flowable-dmn-engine/src/main/java/org/flowable/dmn/engine/impl/DmnDeploymentQueryImpl.java","lineNumber":139,"sourceCode":"    @Override\n    public DmnDeploymentQueryImpl deploymentWithoutTenantId() {\n        this.withoutTenantId = true;\n        return this;\n    }\n\n    @Override\n    public DmnDeploymentQueryImpl parentDeploymentId(String parentDeploymentId) {\n        if (parentDeploymentId == null) {\n            throw new FlowableIllegalArgumentException(\"parentDeploymentId is null\");\n        }\n        this.parentDeploymentId = parentDeploymentId;\n        return this;\n    }\n\n    @Override\n    public DmnDeploymentQueryImpl parentDeploymentIdLike(String parentDeploymentIdLike) {\n        if (parentDeploymentIdLike == null) {\n            throw new FlowableIllegalArgumentException(\"parentDeploymentIdLike is null\");\n        }\n        this.parentDeploymentIdLike = parentDeploymentIdLike;\n        return this;\n    }\n\n    @Override\n    public DmnDeploymentQueryImpl decisionKey(String key) {\n        if (key == null) {\n            throw new FlowableIllegalArgumentException(\"key is null\");\n        }\n        this.decisionKey = key;\n        return this;\n    }\n\n    @Override\n    public DmnDeploymentQueryImpl decisionKeyLike(String keyLike) {\n        if (keyLike == null) {\n            throw new FlowableIllegalArgumentException(\"keyLike is null\");","sourceCodeStart":121,"sourceCodeEnd":157,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-dmn-engine/src/main/java/org/flowable/dmn/engine/impl/DmnDeploymentQueryImpl.java#L121-L157","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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"],"exampleFix":"// before\nString filter = userInput.get(\"parentDeploymentId\");\nquery.parentDeploymentIdLike(filter);\n// after\nString filter = userInput.get(\"parentDeploymentId\");\nif (filter != null && !filter.isEmpty()) {\n    query.parentDeploymentIdLike(\"%\" + filter + \"%\");\n}","handlingStrategy":"validation","validationCode":"if (parentDeploymentIdLike == null || parentDeploymentIdLike.isEmpty()) { throw new IllegalArgumentException(\"parentDeploymentIdLike pattern required\"); }","typeGuard":"boolean isLikePattern(String p) { return p != null && !p.isEmpty(); }","tryCatchPattern":"try { query.parentDeploymentIdLike(pattern); } catch (FlowableIllegalArgumentException e) { log.warn(\"Ignoring like filter: {}\", e.getMessage()); }","preventionTips":["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"],"tags":["flowable","dmn","query","like-pattern","null-check"],"backgroundTag":"null-argument","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}