From 186d9f550f601697cb01570f9f5eb9cc139821cb Mon Sep 17 00:00:00 2001 From: kimjinmyeong Date: Sat, 16 Nov 2024 03:02:45 +0900 Subject: [PATCH] Render NEGATING_SIMPLE_PROPERTY as IS NOT NULL when argument value is null. When a query method uses NEGATING_SIMPLE_PROPERTY and the argument is null, the generated query now uses `IS NOT NULL` instead of `<>`. This ensures consistent behavior when handling null values across queries. Closes: #3675 Original Pull Request: #3681 --- .../data/jpa/repository/query/JpaQueryCreator.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryCreator.java b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryCreator.java index 255ac86dc..28ec8cf31 100644 --- a/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryCreator.java +++ b/spring-data-jpa/src/main/java/org/springframework/data/jpa/repository/query/JpaQueryCreator.java @@ -56,6 +56,7 @@ import org.springframework.util.Assert; * @author Moritz Becker * @author Andrey Kovalev * @author Greg Turnquist + * @author Jinmyeong Kim */ public class JpaQueryCreator extends AbstractQueryCreator, Predicate> { @@ -311,8 +312,10 @@ public class JpaQueryCreator extends AbstractQueryCreator negatedExpression = provider.next(part); + Expression negatedPath = getTypedPath(root, part); + return negatedExpression.isIsNullParameter() ? negatedPath.isNotNull() + : builder.notEqual(upperIfIgnoreCase(negatedPath), upperIfIgnoreCase(negatedExpression.getExpression())); case IS_EMPTY: case IS_NOT_EMPTY: