{"record":{"id":"aef052f29e9aac16","repo":"flowable/flowable-engine","slug":"only-string-variable-values-are-supported-for-like-aef052","errorCode":null,"errorMessage":"Only string variable values are supported for like, but was: ${actualValue.getClass().getName()}","messagePattern":"Only string variable values are supported for like, but was: (.+?)","errorType":"validation","errorClass":"FlowableIllegalArgumentException","httpStatus":400,"severity":"error","filePath":"modules/flowable-cmmn-rest/src/main/java/org/flowable/cmmn/rest/service/api/runtime/caze/BaseCaseInstanceResource.java","lineNumber":355,"sourceCode":"                break;\n\n            case NOT_EQUALS:\n                caseInstanceQuery.variableValueNotEquals(variable.getName(), actualValue);\n                break;\n\n            case NOT_EQUALS_IGNORE_CASE:\n                if (actualValue instanceof String) {\n                    caseInstanceQuery.variableValueNotEqualsIgnoreCase(variable.getName(), (String) actualValue);\n                } else {\n                    throw new FlowableIllegalArgumentException(\"Only string variable values are supported when ignoring casing, but was: \" + actualValue.getClass().getName());\n                }\n                break;\n\n            case LIKE:\n                if (actualValue instanceof String) {\n                    caseInstanceQuery.variableValueLike(variable.getName(), (String) actualValue);\n                } else {\n                    throw new FlowableIllegalArgumentException(\"Only string variable values are supported for like, but was: \" + actualValue.getClass().getName());\n                }\n                break;\n\n            case LIKE_IGNORE_CASE:\n                if (actualValue instanceof String) {\n                    caseInstanceQuery.variableValueLikeIgnoreCase(variable.getName(), (String) actualValue);\n                } else {\n                    throw new FlowableIllegalArgumentException(\"Only string variable values are supported for like, but was: \" + actualValue.getClass().getName());\n                }\n                break;\n\n            case GREATER_THAN:\n                caseInstanceQuery.variableValueGreaterThan(variable.getName(), actualValue);\n                break;\n\n            case GREATER_THAN_OR_EQUALS:\n                caseInstanceQuery.variableValueGreaterThanOrEqual(variable.getName(), actualValue);\n                break;","sourceCodeStart":337,"sourceCodeEnd":373,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-cmmn-rest/src/main/java/org/flowable/cmmn/rest/service/api/runtime/caze/BaseCaseInstanceResource.java#L337-L373","documentation":"The LIKE variable query operation matches string patterns only. If a query variable with operation LIKE carries a non-String value, BaseCaseInstanceResource.addVariables throws FlowableIllegalArgumentException reporting the value's Java class.","triggerScenarios":"POST case-instance query where a variable has operation LIKE and value is not a String (e.g. number or boolean).","commonSituations":"Sending unquoted JSON numbers for pattern matching; clients assuming LIKE accepts any comparable type; generated clients serializing values as native JSON types.","solutions":["Send the LIKE value as a JSON string (quote it)","Use EQUALS for exact non-string comparisons","Ensure the client library serializes the value as String for pattern operations"],"exampleFix":"// before\n{\"name\":\"businessKey\",\"value\":1001,\"operation\":\"LIKE\"}\n// after\n{\"name\":\"businessKey\",\"value\":\"1001\",\"operation\":\"LIKE\"}","handlingStrategy":"validation","validationCode":"if (variable.operation === 'LIKE' && typeof variable.value !== 'string') {\n  throw new Error('LIKE requires a string value');\n}","typeGuard":"const isString = (v) => typeof v === 'string';","tryCatchPattern":"null","preventionTips":["Always serialize LIKE/LIKE_IGNORE_CASE values as strings","Review query payloads before sending pattern operations","Add client-side schema validation for query variables"],"tags":["rest-api","query-variables","like-operator","cmmn"],"backgroundTag":"type-mismatch","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"}