diff --git a/hibernate-core/src/main/java/org/hibernate/sql/ast/spi/AbstractSqlAstTranslator.java b/hibernate-core/src/main/java/org/hibernate/sql/ast/spi/AbstractSqlAstTranslator.java index d140524d8bd0..f96e8539953d 100644 --- a/hibernate-core/src/main/java/org/hibernate/sql/ast/spi/AbstractSqlAstTranslator.java +++ b/hibernate-core/src/main/java/org/hibernate/sql/ast/spi/AbstractSqlAstTranslator.java @@ -7643,9 +7643,6 @@ public void visitInListPredicate(InListPredicate inListPredicate) { .getExpressions().get( 0 ); } else if ( !dialect.supportsRowValueConstructorSyntaxInInList() ) { - final ComparisonOperator comparisonOperator = inListPredicate.isNegated() ? - ComparisonOperator.NOT_EQUAL : - ComparisonOperator.EQUAL; // Some DBs like Oracle support tuples only for the IN subquery predicate if ( dialect.supportsRowValueConstructorSyntaxInInSubQuery() && dialect.supportsUnionAll() ) { inListPredicate.getTestExpression().accept( this ); @@ -7664,14 +7661,17 @@ else if ( !dialect.supportsRowValueConstructorSyntaxInInList() ) { appendSql( CLOSE_PARENTHESIS ); } else { - String separator = NO_SEPARATOR; + if (inListPredicate.isNegated()) { + appendSql("not "); + } appendSql( OPEN_PARENTHESIS ); - for ( Expression expression : listExpressions ) { - appendSql( separator ); + String separator = NO_SEPARATOR; + for (Expression expression : listExpressions) { + appendSql(separator); emulateTupleComparison( lhsTuple.getExpressions(), - getSqlTuple( expression ).getExpressions(), - comparisonOperator, + SqlTupleContainer.getSqlTuple(expression).getExpressions(), + ComparisonOperator.EQUAL, true ); separator = " or ";