{"record":{"id":"2fbe1e42304c8a23","repo":"hibernate/hibernate-orm","slug":"filter-definition-object-or-name-is-null-s","errorCode":null,"errorMessage":"Filter definition object or name is null: %s","messagePattern":"Filter definition object or name is null: (.+?)","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"hibernate-core/src/main/java/org/hibernate/boot/internal/InFlightMetadataCollectorImpl.java","lineNumber":589,"sourceCode":"\n\n\t// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\t// filter definitions\n\n\t@Override\n\tpublic Map<String, FilterDefinition> getFilterDefinitions() {\n\t\treturn filterDefinitionMap;\n\t}\n\n\t@Override\n\tpublic FilterDefinition getFilterDefinition(String name) {\n\t\treturn filterDefinitionMap.get( name );\n\t}\n\n\t@Override\n\tpublic void addFilterDefinition(FilterDefinition filterDefinition) {\n\t\tif ( filterDefinition == null || filterDefinition.getFilterName() == null ) {\n\t\t\tthrow new IllegalArgumentException( \"Filter definition object or name is null: \"  + filterDefinition );\n\t\t}\n\t\tfilterDefinitionMap.put( filterDefinition.getFilterName(), filterDefinition );\n\t}\n\n\n\t// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\t// fetch profiles\n\n\t@Override\n\tpublic java.util.Collection<FetchProfile> getFetchProfiles() {\n\t\treturn fetchProfileMap.values();\n\t}\n\n\t@Override\n\tpublic FetchProfile getFetchProfile(String name) {\n\t\treturn fetchProfileMap.get( name );\n\t}\n","sourceCodeStart":571,"sourceCodeEnd":607,"githubUrl":"https://github.com/hibernate/hibernate-orm/blob/fad1729dce015f908198d57a8d80274a30f905a5/hibernate-core/src/main/java/org/hibernate/boot/internal/InFlightMetadataCollectorImpl.java#L571-L607","documentation":"InFlightMetadataCollectorImpl.addFilterDefinition requires a FilterDefinition object with a non-null filter name. Passing null - either the definition itself or its getFilterName() - throws IllegalArgumentException 'Filter definition object or name is null' with the (possibly null) definition appended. This guard runs before the map insert, so nothing is partially registered.","triggerScenarios":"Programmatic metadata or integration code calling addFilterDefinition(null), or with a FilterDefinition constructed without a name; XML <filter-def> elements with a missing name attribute surface here as well once parsed.","commonSituations":"Custom integrations registering filters built from configuration maps where the name key is absent; dynamic filter registration driven by user input; generated mappings with incomplete filter definitions.","solutions":["Construct the FilterDefinition with a non-null name before registering it","Null-check the definition and its name at the registration boundary and fail with a descriptive error","Fix the source configuration/XML so every filter definition declares a name"],"exampleFix":"// before\ncollector.addFilterDefinition(filterDef); // filterDef or its name is null\n\n// after\nif (filterDef == null || filterDef.getFilterName() == null) {\n    throw new IllegalArgumentException(\"filter definition requires a name\");\n}\ncollector.addFilterDefinition(filterDef);","handlingStrategy":"validation","validationCode":"Objects.requireNonNull(filterDefinition, \"filter definition\");\nObjects.requireNonNull(filterDefinition.getFilterName(), \"filter name\");\ncollector.addFilterDefinition(filterDefinition);","typeGuard":"static boolean isRegistrableFilter(FilterDefinition d) {\n    return d != null && d.getFilterName() != null;\n}","tryCatchPattern":null,"preventionTips":["Validate name presence when building FilterDefinitions from config maps","Keep filter registration behind one helper that centralizes the null checks"],"tags":["hibernate","filter-definition","metadata","null-check"],"backgroundTag":"invalid-filter-definition","analyzedSha":"fad1729dce015f908198d57a8d80274a30f905a5","analyzedAt":"2026-08-22T04:13:57.527Z","schemaVersion":2},"datasetVersion":"2026-08-22T09:17:25.309Z"}