From 5352fe34cf15e375d84307301dd035f3f54f4bd5 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Mon, 28 Feb 2022 15:17:44 +0100 Subject: [PATCH] Associate value with isTrue/isFalse criteria operators. We now associate a boolean value with both operators as those operators are rendered using equals comparison in the actual SQL text. Orginal pull request #1188 --- .../data/jdbc/repository/query/QueryMapper.java | 6 ++++-- .../data/relational/core/query/Criteria.java | 4 ++-- .../data/relational/core/query/CriteriaUnitTests.java | 2 ++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/QueryMapper.java b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/QueryMapper.java index 33a3a4fa..d674417d 100644 --- a/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/QueryMapper.java +++ b/spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/QueryMapper.java @@ -494,13 +494,15 @@ class QueryMapper { if (comparator == Comparator.IS_TRUE) { - Expression bind = bindBoolean(column, parameterSource, true); + Expression bind = bindBoolean(column, parameterSource, + mappedValue instanceof Boolean ? (Boolean) mappedValue : true); return column.isEqualTo(bind); } if (comparator == Comparator.IS_FALSE) { - Expression bind = bindBoolean(column, parameterSource, false); + Expression bind = bindBoolean(column, parameterSource, + mappedValue instanceof Boolean ? (Boolean) mappedValue : false); return column.isEqualTo(bind); } diff --git a/spring-data-relational/src/main/java/org/springframework/data/relational/core/query/Criteria.java b/spring-data-relational/src/main/java/org/springframework/data/relational/core/query/Criteria.java index 59934bce..a4485b86 100644 --- a/spring-data-relational/src/main/java/org/springframework/data/relational/core/query/Criteria.java +++ b/spring-data-relational/src/main/java/org/springframework/data/relational/core/query/Criteria.java @@ -849,7 +849,7 @@ public class Criteria implements CriteriaDefinition { */ @Override public Criteria isTrue() { - return createCriteria(Comparator.IS_TRUE, null); + return createCriteria(Comparator.IS_TRUE, true); } /* @@ -858,7 +858,7 @@ public class Criteria implements CriteriaDefinition { */ @Override public Criteria isFalse() { - return createCriteria(Comparator.IS_FALSE, null); + return createCriteria(Comparator.IS_FALSE, false); } protected Criteria createCriteria(Comparator comparator, @Nullable Object value) { diff --git a/spring-data-relational/src/test/java/org/springframework/data/relational/core/query/CriteriaUnitTests.java b/spring-data-relational/src/test/java/org/springframework/data/relational/core/query/CriteriaUnitTests.java index 6529ad76..02439f85 100644 --- a/spring-data-relational/src/test/java/org/springframework/data/relational/core/query/CriteriaUnitTests.java +++ b/spring-data-relational/src/test/java/org/springframework/data/relational/core/query/CriteriaUnitTests.java @@ -285,6 +285,7 @@ public class CriteriaUnitTests { assertThat(criteria.getColumn()).isEqualTo(SqlIdentifier.unquoted("foo")); assertThat(criteria.getComparator()).isEqualTo(CriteriaDefinition.Comparator.IS_TRUE); + assertThat(criteria.getValue()).isEqualTo(true); } @Test // DATAJDBC-513 @@ -294,5 +295,6 @@ public class CriteriaUnitTests { assertThat(criteria.getColumn()).isEqualTo(SqlIdentifier.unquoted("foo")); assertThat(criteria.getComparator()).isEqualTo(CriteriaDefinition.Comparator.IS_FALSE); + assertThat(criteria.getValue()).isEqualTo(false); } }