diff --git a/pom.xml b/pom.xml
index eeaa0b9e93..985e2dc047 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.springframework.data
spring-data-relational-parent
- 2.3.0-SNAPSHOT
+ 2.3.0-1007-selectbuild-accept-conditions-SNAPSHOT
pom
Spring Data Relational Parent
diff --git a/spring-data-jdbc-distribution/pom.xml b/spring-data-jdbc-distribution/pom.xml
index 03d6a5c2a0..ec9cd6b8c4 100644
--- a/spring-data-jdbc-distribution/pom.xml
+++ b/spring-data-jdbc-distribution/pom.xml
@@ -14,7 +14,7 @@
org.springframework.data
spring-data-relational-parent
- 2.3.0-SNAPSHOT
+ 2.3.0-1007-selectbuild-accept-conditions-SNAPSHOT
../pom.xml
diff --git a/spring-data-jdbc/pom.xml b/spring-data-jdbc/pom.xml
index af9ad0904e..86817b43b1 100644
--- a/spring-data-jdbc/pom.xml
+++ b/spring-data-jdbc/pom.xml
@@ -6,7 +6,7 @@
4.0.0
spring-data-jdbc
- 2.3.0-SNAPSHOT
+ 2.3.0-1007-selectbuild-accept-conditions-SNAPSHOT
Spring Data JDBC
Spring Data module for JDBC repositories.
@@ -15,7 +15,7 @@
org.springframework.data
spring-data-relational-parent
- 2.3.0-SNAPSHOT
+ 2.3.0-1007-selectbuild-accept-conditions-SNAPSHOT
diff --git a/spring-data-relational/pom.xml b/spring-data-relational/pom.xml
index 4e42a006ec..fae872c09e 100644
--- a/spring-data-relational/pom.xml
+++ b/spring-data-relational/pom.xml
@@ -6,7 +6,7 @@
4.0.0
spring-data-relational
- 2.3.0-SNAPSHOT
+ 2.3.0-1007-selectbuild-accept-conditions-SNAPSHOT
Spring Data Relational
Spring Data Relational support
@@ -14,7 +14,7 @@
org.springframework.data
spring-data-relational-parent
- 2.3.0-SNAPSHOT
+ 2.3.0-1007-selectbuild-accept-conditions-SNAPSHOT
diff --git a/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/Condition.java b/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/Condition.java
index bacb5e84aa..956d2c6860 100644
--- a/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/Condition.java
+++ b/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/Condition.java
@@ -23,7 +23,7 @@
* @since 1.1
* @see Conditions
*/
-public interface Condition extends Segment {
+public interface Condition extends Segment, Expression {
/**
* Combine another {@link Condition} using {@code AND}.
diff --git a/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/render/ComparisonVisitor.java b/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/render/ComparisonVisitor.java
index 186c0601c2..476f1223b5 100644
--- a/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/render/ComparisonVisitor.java
+++ b/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/render/ComparisonVisitor.java
@@ -52,14 +52,14 @@ class ComparisonVisitor extends FilteredSubtreeVisitor {
@Override
Delegation enterNested(Visitable segment) {
- if (segment instanceof Expression) {
- ExpressionVisitor visitor = new ExpressionVisitor(context);
+ if (segment instanceof Condition) {
+ ConditionVisitor visitor = new ConditionVisitor(context);
current = visitor;
return Delegation.delegateTo(visitor);
}
- if (segment instanceof Condition) {
- ConditionVisitor visitor = new ConditionVisitor(context);
+ if (segment instanceof Expression) {
+ ExpressionVisitor visitor = new ExpressionVisitor(context);
current = visitor;
return Delegation.delegateTo(visitor);
}
diff --git a/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/render/FilteredSingleConditionRenderSupport.java b/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/render/FilteredSingleConditionRenderSupport.java
index 0a148c8d64..8f23b672f6 100644
--- a/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/render/FilteredSingleConditionRenderSupport.java
+++ b/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/render/FilteredSingleConditionRenderSupport.java
@@ -28,6 +28,7 @@
* and delegate nested {@link Expression} and {@link Condition} rendering.
*
* @author Mark Paluch
+ * @author Jens Schauder
* @since 1.1
*/
abstract class FilteredSingleConditionRenderSupport extends FilteredSubtreeVisitor {
@@ -55,18 +56,19 @@ abstract class FilteredSingleConditionRenderSupport extends FilteredSubtreeVisit
@Override
Delegation enterNested(Visitable segment) {
- if (segment instanceof Expression) {
- ExpressionVisitor visitor = new ExpressionVisitor(context);
+ if (segment instanceof Condition) {
+ ConditionVisitor visitor = new ConditionVisitor(context);
current = visitor;
return Delegation.delegateTo(visitor);
}
- if (segment instanceof Condition) {
- ConditionVisitor visitor = new ConditionVisitor(context);
+ if (segment instanceof Expression) {
+ ExpressionVisitor visitor = new ExpressionVisitor(context);
current = visitor;
return Delegation.delegateTo(visitor);
}
+
throw new IllegalStateException("Cannot provide visitor for " + segment);
}
diff --git a/spring-data-relational/src/test/java/org/springframework/data/relational/core/sql/render/SelectRendererUnitTests.java b/spring-data-relational/src/test/java/org/springframework/data/relational/core/sql/render/SelectRendererUnitTests.java
index 7a223c1564..3bf9953936 100644
--- a/spring-data-relational/src/test/java/org/springframework/data/relational/core/sql/render/SelectRendererUnitTests.java
+++ b/spring-data-relational/src/test/java/org/springframework/data/relational/core/sql/render/SelectRendererUnitTests.java
@@ -467,4 +467,18 @@ void shouldRenderCast() {
final String rendered = SqlRenderer.toString(select);
assertThat(rendered).isEqualTo("SELECT CAST(User.name AS VARCHAR2) FROM User");
}
+
+ @Test // GH-1007
+ void shouldRenderConditionAsExpression() {
+
+ Table table = SQL.table("User");
+ Select select = StatementBuilder.select( //
+ Conditions.isGreater(table.column("age"), SQL.literalOf(18)) //
+ ) //
+ .from(table) //
+ .build();
+
+ final String rendered = SqlRenderer.toString(select);
+ assertThat(rendered).isEqualTo("SELECT User.age > 18 FROM User");
+ }
}