diff --git a/pom.xml b/pom.xml index 680dddf736..03b742d2e7 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.data spring-data-relational-parent - 1.1.0.BUILD-SNAPSHOT + 1.1.0.DATAJDBC-347-SNAPSHOT pom Spring Data Relational Parent diff --git a/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/SelectBuilder.java b/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/SelectBuilder.java index 5ee62bc524..e6e005314c 100644 --- a/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/SelectBuilder.java +++ b/spring-data-relational/src/main/java/org/springframework/data/relational/core/sql/SelectBuilder.java @@ -110,6 +110,18 @@ interface SelectAndFrom extends SelectFrom { */ SelectAndFrom distinct(); + /** + * Declare a {@link Table} to {@code SELECT … FROM}. Multiple calls to this or other {@code from} methods keep + * adding items to the select list and do not replace previously contained items. + * + * @param table the table name to {@code SELECT … FROM} must not be {@literal null} or empty. + * @return {@code this} builder. + * @see From + * @see SQL#table(String) + */ + @Override + SelectFromAndJoin from(String table); + /** * Declare a {@link Table} to {@code SELECT … FROM}. Multiple calls to this or other {@code from} methods keep * adding items to the select list and do not replace previously contained items. diff --git a/spring-data-relational/src/test/java/org/springframework/data/relational/core/sql/SelectBuilderUnitTests.java b/spring-data-relational/src/test/java/org/springframework/data/relational/core/sql/SelectBuilderUnitTests.java index 8938b9d909..30c0d5acac 100644 --- a/spring-data-relational/src/test/java/org/springframework/data/relational/core/sql/SelectBuilderUnitTests.java +++ b/spring-data-relational/src/test/java/org/springframework/data/relational/core/sql/SelectBuilderUnitTests.java @@ -17,11 +17,10 @@ import static org.assertj.core.api.Assertions.*; -import java.util.ArrayList; -import java.util.List; import java.util.OptionalLong; import org.junit.Test; + import org.springframework.data.relational.core.sql.Join.JoinType; /** @@ -65,6 +64,23 @@ public void selectTop() { assertThat(select.getLimit()).isEqualTo(OptionalLong.of(10)); } + @Test // DATAJDBC-347 + public void selectWithWhere() { + + SelectBuilder builder = StatementBuilder.select(); + + Table table = SQL.table("mytable"); + Column foo = table.column("foo"); + + Comparison condition = foo.isEqualTo(SQL.literalOf("bar")); + Select select = builder.select(foo).from(table.getName()).where(condition).build(); + + CapturingVisitor visitor = new CapturingVisitor(); + select.visit(visitor); + + assertThat(visitor.enter).containsSequence(foo, table, new From(table), table, new Where(condition)); + } + @Test // DATAJDBC-309 public void moreAdvancedSelect() {