{"record":{"id":"e7389db3e1c1e1b3","repo":"hibernate/hibernate-orm","slug":"non-boolean-expression-used-in-predicate-context","errorCode":null,"errorMessage":"Non-boolean expression used in predicate context: {}","messagePattern":"Non-boolean expression used in predicate context: (.+?)","errorType":"exception","errorClass":"SemanticException","httpStatus":null,"severity":"error","filePath":"hibernate-core/src/main/java/org/hibernate/query/hql/internal/SemanticQueryBuilder.java","lineNumber":3477,"sourceCode":"\t}\n\n\t@Override\n\tpublic SqmPredicate visitExistsCollectionPartPredicate(HqlParser.ExistsCollectionPartPredicateContext ctx) {\n\t\tfinal var subQuery = createCollectionReferenceSubQuery( ctx.simplePath(), null );\n\t\treturn new SqmExistsPredicate( subQuery, nodeBuilder() );\n\t}\n\n\t@Override\n\tpublic SqmPredicate visitExistsPredicate(HqlParser.ExistsPredicateContext ctx) {\n\t\tfinal var expression = (SqmExpression<?>) ctx.expression().accept( this );\n\t\treturn new SqmExistsPredicate( expression, nodeBuilder() );\n\t}\n\n\t@Override\n\tpublic SqmPredicate visitBooleanExpressionPredicate(HqlParser.BooleanExpressionPredicateContext ctx) {\n\t\tfinal var expression = (SqmExpression<?>) ctx.expression().accept( this );\n\t\tif ( resolveExpressibleJavaTypeClass( expression ) != Boolean.class ) {\n\t\t\tthrow new SemanticException(\n\t\t\t\t\t\"Non-boolean expression used in predicate context: \" + ctx.getText(),\n\t\t\t\t\tquery\n\t\t\t);\n\t\t}\n\t\t@SuppressWarnings(\"unchecked\")\n\t\tfinal var booleanExpression = (SqmExpression<Boolean>) expression;\n\t\treturn new SqmBooleanExpressionPredicate( booleanExpression, nodeBuilder() );\n\t}\n\n\t@Override\n\tpublic Object visitEntityTypeExpression(HqlParser.EntityTypeExpressionContext ctx) {\n\t\tfinal var entityTypeReferenceContext = ctx.entityTypeReference();\n\t\t// can be one of 2 forms:\n\t\t//\t\t1) TYPE( some.path )\n\t\t//\t\t2) TYPE( :someParam )\n\t\tfinal var parameter = entityTypeReferenceContext.parameter();\n\t\tfinal var path = entityTypeReferenceContext.path();\n\t\tif ( parameter != null ) {","sourceCodeStart":3459,"sourceCodeEnd":3495,"githubUrl":"https://github.com/hibernate/hibernate-orm/blob/fad1729dce015f908198d57a8d80274a30f905a5/hibernate-core/src/main/java/org/hibernate/query/hql/internal/SemanticQueryBuilder.java#L3459-L3495","documentation":"Error \"Non-boolean expression used in predicate context: {}\" thrown in hibernate/hibernate-orm.","triggerScenarios":"A path expression of the wrong type is used in a collection predicate.","commonSituations":"Applying member of / is empty / includes / intersects / in-array to non-plural expressions.","solutions":["Wrap the expression in a comparison so it yields a boolean.","Use the expression in a value context instead of a predicate context."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"fad1729dce015f908198d57a8d80274a30f905a5","analyzedAt":"2026-08-22T04:13:57.527Z","schemaVersion":2},"datasetVersion":"2026-08-22T09:17:25.309Z"}