{"record":{"id":"a75c56aab5788506","repo":"flowable/flowable-engine","slug":"invalid-query-usage-cannot-set-both-tasknamein-an-a75c56","errorCode":null,"errorMessage":"Invalid query usage: cannot set both taskNameIn and nameLikeIgnoreCase","messagePattern":"Invalid query usage: cannot set both taskNameIn and nameLikeIgnoreCase","errorType":"validation","errorClass":"FlowableIllegalArgumentException","httpStatus":null,"severity":"error","filePath":"modules/flowable-task-service/src/main/java/org/flowable/task/service/impl/TaskQueryImpl.java","lineNumber":271,"sourceCode":"            throw new FlowableIllegalArgumentException(\"Task name list is null\");\n        }\n        if (nameList.isEmpty()) {\n            throw new FlowableIllegalArgumentException(\"Task name list is empty\");\n        }\n        for (String name : nameList) {\n            if (name == null) {\n                throw new FlowableIllegalArgumentException(\"None of the given task names can be null\");\n            }\n        }\n\n        if (name != null) {\n            throw new FlowableIllegalArgumentException(\"Invalid query usage: cannot set both taskNameIn and name\");\n        }\n        if (nameLike != null) {\n            throw new FlowableIllegalArgumentException(\"Invalid query usage: cannot set both taskNameIn and nameLike\");\n        }\n        if (nameLikeIgnoreCase != null) {\n            throw new FlowableIllegalArgumentException(\"Invalid query usage: cannot set both taskNameIn and nameLikeIgnoreCase\");\n        }\n\n        if (orActive) {\n            currentOrQueryObject.nameList = nameList;\n        } else {\n            this.nameList = nameList;\n        }\n        return this;\n    }\n\n    @Override\n    public TaskQuery taskNameInIgnoreCase(Collection<String> nameList) {\n        if (nameList == null) {\n            throw new FlowableIllegalArgumentException(\"Task name list is null\");\n        }\n        if (nameList.isEmpty()) {\n            throw new FlowableIllegalArgumentException(\"Task name list is empty\");\n        }","sourceCodeStart":253,"sourceCodeEnd":289,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-task-service/src/main/java/org/flowable/task/service/impl/TaskQueryImpl.java#L253-L289","documentation":"Thrown by TaskQuery.taskNameIn(Collection) when taskNameLikeIgnoreCase(String) was already set. IN-list matching and case-insensitive LIKE matching are mutually exclusive name criteria in the task query API; combining them would produce contradictory SQL. The library throws FlowableIllegalArgumentException eagerly, before any database call.","triggerScenarios":"taskQuery.taskNameLikeIgnoreCase(\"review%\") then taskQuery.taskNameIn(names) on the same query object (or within the same or() block); the check triggers whenever nameLikeIgnoreCase is non-null at taskNameIn() time.","commonSituations":"Dynamic filter UI offering both 'case-insensitive search' and 'select multiple names'; composing query conditions from two config sources; upgrading code where a new taskNameIn call was added to an existing case-insensitive LIKE query.","solutions":["Use only one of taskNameLikeIgnoreCase(...) or taskNameIn(...) per query","If case-insensitivity is what you need from the LIKE, consider taskNameInIgnoreCase(...) instead — but still only one criterion at a time","Refactor into two queries and merge results in code if both filters are genuinely required"],"exampleFix":"// before\ntaskQuery.taskNameLikeIgnoreCase(\"review%\")\n         .taskNameIn(Arrays.asList(\"Review\", \"Audit\"));\n// after\ntaskQuery.taskNameInIgnoreCase(Arrays.asList(\"Review\", \"Audit\"));","handlingStrategy":"validation","validationCode":"if (nameLikeIgnoreCase != null && nameList != null) {\n    throw new IllegalArgumentException(\"Use either taskNameLikeIgnoreCase or taskNameIn, not both\");\n}","typeGuard":null,"tryCatchPattern":"try {\n    taskService.createTaskQuery().taskNameIn(names).list();\n} catch (FlowableIllegalArgumentException e) {\n    // choose one criterion and retry the query build\n}","preventionTips":["Remember IN and LIKE variants are always exclusive, ignore-case or not","When migrating from LIKE to IN, delete the old call","Add unit tests asserting your query builders set at most one name criterion"],"tags":["flowable","query-usage","task-query","mutually-exclusive"],"backgroundTag":"mutually-exclusive-options","analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-18T11:17:12.947Z"}