From 0aa623280f753f5890dfda4a4a06993a09ecb806 Mon Sep 17 00:00:00 2001 From: Jens Schauder Date: Mon, 3 Dec 2018 14:47:36 +0100 Subject: [PATCH] #20 - Polishing. Rename Database.latestDialect() to defaultDialect(). Rename Dialect.returnGeneratedKeys() to Dialect.generatedKeysClause(). Simplify IndexBindMarkers. Create BindableOperation.bind(Statement, SettableValue) to reduce code duplicates. Rename BindSpecWrapper to BindSpecAdapter. Original pull request: #24. --- .../config/AbstractR2dbcConfiguration.java | 2 +- .../data/r2dbc/dialect/Database.java | 11 +++--- .../data/r2dbc/dialect/Dialect.java | 10 ++++-- .../data/r2dbc/dialect/H2Dialect.java | 2 +- .../r2dbc/dialect/IndexedBindMarkers.java | 7 ++-- .../data/r2dbc/dialect/PostgresDialect.java | 14 ++++---- .../data/r2dbc/dialect/SqlServerDialect.java | 14 ++++---- .../r2dbc/function/BindableOperation.java | 21 +++++++++++ .../r2dbc/function/DefaultDatabaseClient.java | 14 ++------ .../DefaultDatabaseClientBuilder.java | 2 +- .../DefaultReactiveDataAccessStrategy.java | 16 ++++----- ...dSpecWrapper.java => BindSpecAdapter.java} | 36 +++++++++---------- .../support/SimpleR2dbcRepository.java | 18 ++++------ ...stractR2dbcRepositoryIntegrationTests.java | 2 +- .../r2dbc/testing/SqlServerTestSupport.java | 2 +- 15 files changed, 92 insertions(+), 79 deletions(-) rename src/main/java/org/springframework/data/r2dbc/repository/support/{BindSpecWrapper.java => BindSpecAdapter.java} (70%) diff --git a/src/main/java/org/springframework/data/r2dbc/config/AbstractR2dbcConfiguration.java b/src/main/java/org/springframework/data/r2dbc/config/AbstractR2dbcConfiguration.java index 6f3dbb136..e6b11e886 100644 --- a/src/main/java/org/springframework/data/r2dbc/config/AbstractR2dbcConfiguration.java +++ b/src/main/java/org/springframework/data/r2dbc/config/AbstractR2dbcConfiguration.java @@ -68,7 +68,7 @@ public abstract class AbstractR2dbcConfiguration { .orElseThrow(() -> new UnsupportedOperationException( String.format("Cannot determine a dialect for %s using %s. Please provide a Dialect.", connectionFactory.getMetadata().getName(), connectionFactory))) - .latestDialect(); + .defaultDialect(); } /** diff --git a/src/main/java/org/springframework/data/r2dbc/dialect/Database.java b/src/main/java/org/springframework/data/r2dbc/dialect/Database.java index ee3f4e111..b59b9259e 100644 --- a/src/main/java/org/springframework/data/r2dbc/dialect/Database.java +++ b/src/main/java/org/springframework/data/r2dbc/dialect/Database.java @@ -15,6 +15,7 @@ import org.springframework.util.Assert; * if none was configured explicitly. * * @author Mark Paluch + * @author Jens Schauder */ public enum Database { @@ -25,7 +26,7 @@ public enum Database { } @Override - public Dialect latestDialect() { + public Dialect defaultDialect() { return PostgresDialect.INSTANCE; } }, @@ -37,7 +38,7 @@ public enum Database { } @Override - public Dialect latestDialect() { + public Dialect defaultDialect() { return SqlServerDialect.INSTANCE; } }, @@ -49,7 +50,7 @@ public enum Database { } @Override - public Dialect latestDialect() { + public Dialect defaultDialect() { return H2Dialect.INSTANCE; } }; @@ -63,7 +64,7 @@ public enum Database { */ public static Optional findDatabase(ConnectionFactory connectionFactory) { - Assert.notNull(connectionFactory, "ConnectionFactor must not be null!"); + Assert.notNull(connectionFactory, "ConnectionFactory must not be null!"); ConnectionFactoryMetadata metadata = connectionFactory.getMetadata(); @@ -87,6 +88,6 @@ public enum Database { * * @return the latest {@link Dialect} for the underlying database. */ - public abstract Dialect latestDialect(); + public abstract Dialect defaultDialect(); } diff --git a/src/main/java/org/springframework/data/r2dbc/dialect/Dialect.java b/src/main/java/org/springframework/data/r2dbc/dialect/Dialect.java index f73a3ff68..3371d6230 100644 --- a/src/main/java/org/springframework/data/r2dbc/dialect/Dialect.java +++ b/src/main/java/org/springframework/data/r2dbc/dialect/Dialect.java @@ -4,6 +4,7 @@ package org.springframework.data.r2dbc.dialect; * Represents a dialect that is implemented by a particular database. * * @author Mark Paluch + * @author Jens Schauder */ public interface Dialect { @@ -15,12 +16,15 @@ public interface Dialect { BindMarkersFactory getBindMarkersFactory(); /** - * Returns the statement to include for returning generated keys. The returned query is directly appended to + * Returns the clause to include for returning generated keys. The returned query is directly appended to * {@code INSERT} statements. * - * @return the statement to include for returning generated keys. + * @return the clause to include for returning generated keys. + * @deprecated to be removed after upgrading to R2DBC 1.0M7 in favor of using the driver's direct support for + * retrieving generated keys. */ - String returnGeneratedKeys(); + @Deprecated + String generatedKeysClause(); /** * Return the {@link LimitClause} used by this dialect. diff --git a/src/main/java/org/springframework/data/r2dbc/dialect/H2Dialect.java b/src/main/java/org/springframework/data/r2dbc/dialect/H2Dialect.java index 18e1acb47..382dc3cc9 100644 --- a/src/main/java/org/springframework/data/r2dbc/dialect/H2Dialect.java +++ b/src/main/java/org/springframework/data/r2dbc/dialect/H2Dialect.java @@ -17,7 +17,7 @@ public class H2Dialect extends PostgresDialect { * @see org.springframework.data.r2dbc.dialect.Dialect#returnGeneratedKeys() */ @Override - public String returnGeneratedKeys() { + public String generatedKeysClause() { return ""; } } diff --git a/src/main/java/org/springframework/data/r2dbc/dialect/IndexedBindMarkers.java b/src/main/java/org/springframework/data/r2dbc/dialect/IndexedBindMarkers.java index fa59c112b..5389675b7 100644 --- a/src/main/java/org/springframework/data/r2dbc/dialect/IndexedBindMarkers.java +++ b/src/main/java/org/springframework/data/r2dbc/dialect/IndexedBindMarkers.java @@ -9,6 +9,7 @@ import java.util.concurrent.atomic.AtomicIntegerFieldUpdater; * prefix for bind markers to be represented within the query string. * * @author Mark Paluch + * @author Jens Schauder */ class IndexedBindMarkers implements BindMarkers { @@ -28,9 +29,9 @@ class IndexedBindMarkers implements BindMarkers { * @param beginWith the first index to use. */ IndexedBindMarkers(String prefix, int beginWith) { - this.counter = beginWith; + this.counter = 0; this.prefix = prefix; - this.offset = 0 - beginWith; + this.offset = beginWith; } /* @@ -42,7 +43,7 @@ class IndexedBindMarkers implements BindMarkers { int index = COUNTER_INCREMENTER.getAndIncrement(this); - return new IndexedBindMarker(prefix + "" + index, index + offset); + return new IndexedBindMarker(prefix + "" + (index + offset), index); } /** diff --git a/src/main/java/org/springframework/data/r2dbc/dialect/PostgresDialect.java b/src/main/java/org/springframework/data/r2dbc/dialect/PostgresDialect.java index 271f27217..fd5da050f 100644 --- a/src/main/java/org/springframework/data/r2dbc/dialect/PostgresDialect.java +++ b/src/main/java/org/springframework/data/r2dbc/dialect/PostgresDialect.java @@ -16,7 +16,7 @@ public class PostgresDialect implements Dialect { private static final LimitClause LIMIT_CLAUSE = new LimitClause() { - /* + /* * (non-Javadoc) * @see org.springframework.data.r2dbc.dialect.LimitClause#getClause(long, long) */ @@ -25,7 +25,7 @@ public class PostgresDialect implements Dialect { return String.format("LIMIT %d OFFSET %d", limit, offset); } - /* + /* * (non-Javadoc) * @see org.springframework.data.r2dbc.dialect.LimitClause#getClause(long) */ @@ -34,7 +34,7 @@ public class PostgresDialect implements Dialect { return "LIMIT " + limit; } - /* + /* * (non-Javadoc) * @see org.springframework.data.r2dbc.dialect.LimitClause#getClausePosition() */ @@ -44,7 +44,7 @@ public class PostgresDialect implements Dialect { } }; - /* + /* * (non-Javadoc) * @see org.springframework.data.r2dbc.dialect.Dialect#getBindMarkersFactory() */ @@ -53,16 +53,16 @@ public class PostgresDialect implements Dialect { return INDEXED; } - /* + /* * (non-Javadoc) * @see org.springframework.data.r2dbc.dialect.Dialect#returnGeneratedKeys() */ @Override - public String returnGeneratedKeys() { + public String generatedKeysClause() { return "RETURNING *"; } - /* + /* * (non-Javadoc) * @see org.springframework.data.r2dbc.dialect.Dialect#limit() */ diff --git a/src/main/java/org/springframework/data/r2dbc/dialect/SqlServerDialect.java b/src/main/java/org/springframework/data/r2dbc/dialect/SqlServerDialect.java index 3047d7763..ccbc993ab 100644 --- a/src/main/java/org/springframework/data/r2dbc/dialect/SqlServerDialect.java +++ b/src/main/java/org/springframework/data/r2dbc/dialect/SqlServerDialect.java @@ -17,7 +17,7 @@ public class SqlServerDialect implements Dialect { private static final LimitClause LIMIT_CLAUSE = new LimitClause() { - /* + /* * (non-Javadoc) * @see org.springframework.data.r2dbc.dialect.LimitClause#getClause(long) */ @@ -26,7 +26,7 @@ public class SqlServerDialect implements Dialect { return "OFFSET 0 ROWS FETCH NEXT " + limit + " ROWS ONLY"; } - /* + /* * (non-Javadoc) * @see org.springframework.data.r2dbc.dialect.LimitClause#getClause(long, long) */ @@ -35,7 +35,7 @@ public class SqlServerDialect implements Dialect { return String.format("OFFSET %d ROWS FETCH NEXT %d ROWS ONLY", offset, limit); } - /* + /* * (non-Javadoc) * @see org.springframework.data.r2dbc.dialect.LimitClause#getClausePosition() */ @@ -45,7 +45,7 @@ public class SqlServerDialect implements Dialect { } }; - /* + /* * (non-Javadoc) * @see org.springframework.data.r2dbc.dialect.Dialect#getBindMarkersFactory() */ @@ -54,16 +54,16 @@ public class SqlServerDialect implements Dialect { return NAMED; } - /* + /* * (non-Javadoc) * @see org.springframework.data.r2dbc.dialect.Dialect#returnGeneratedKeys() */ @Override - public String returnGeneratedKeys() { + public String generatedKeysClause() { return "select SCOPE_IDENTITY() AS GENERATED_KEYS"; } - /* + /* * (non-Javadoc) * @see org.springframework.data.r2dbc.dialect.Dialect#limit() */ diff --git a/src/main/java/org/springframework/data/r2dbc/function/BindableOperation.java b/src/main/java/org/springframework/data/r2dbc/function/BindableOperation.java index ebe26d26c..edccfcd6f 100644 --- a/src/main/java/org/springframework/data/r2dbc/function/BindableOperation.java +++ b/src/main/java/org/springframework/data/r2dbc/function/BindableOperation.java @@ -2,6 +2,8 @@ package org.springframework.data.r2dbc.function; import io.r2dbc.spi.Statement; +import org.springframework.data.r2dbc.function.convert.SettableValue; + /** * Extension to {@link QueryOperation} for operations that allow parameter substitution by binding parameter values. * {@link BindableOperation} is typically created with a {@link Set} of column names or parameter names that accept bind @@ -33,4 +35,23 @@ public interface BindableOperation extends QueryOperation { * @see Statement#bindNull */ void bindNull(Statement statement, String identifier, Class valueType); + + /** + * Bind a {@link SettableValue} to the {@link Statement} using the underlying binding strategy. Binds either the + * {@link SettableValue#getValue()} or {@literal null}, depending on whether the value is {@literal null}. + * + * @param statement the statement to bind the value to. + * @param value the settable value + * @see Statement#bind + * @see Statement#bindNull + */ + default void bind(Statement statement, SettableValue value) { + + if (value.getValue() == null) { + bindNull(statement, value.getIdentifier().toString(), value.getType()); + } else { + bind(statement, value.getIdentifier().toString(), value.getValue()); + } + } + } diff --git a/src/main/java/org/springframework/data/r2dbc/function/DefaultDatabaseClient.java b/src/main/java/org/springframework/data/r2dbc/function/DefaultDatabaseClient.java index badd87205..a6545a93c 100644 --- a/src/main/java/org/springframework/data/r2dbc/function/DefaultDatabaseClient.java +++ b/src/main/java/org/springframework/data/r2dbc/function/DefaultDatabaseClient.java @@ -818,12 +818,7 @@ class DefaultDatabaseClient implements DatabaseClient, ConnectionAccessor { Statement statement = it.createStatement(sql); byName.forEach((k, v) -> { - - if (v.getValue() == null) { - bindableInsert.bindNull(statement, k, v.getType()); - } else { - bindableInsert.bind(statement, k, v.getValue()); - } + bindableInsert.bind(statement, v); }); return statement; }; @@ -911,12 +906,7 @@ class DefaultDatabaseClient implements DatabaseClient, ConnectionAccessor { Statement statement = it.createStatement(sql); for (SettableValue settable : insertValues) { - - if (settable.getValue() == null) { - bindableInsert.bindNull(statement, settable.getIdentifier().toString(), settable.getType()); - } else { - bindableInsert.bind(statement, settable.getIdentifier().toString(), settable.getValue()); - } + bindableInsert.bind(statement, settable); } return statement; diff --git a/src/main/java/org/springframework/data/r2dbc/function/DefaultDatabaseClientBuilder.java b/src/main/java/org/springframework/data/r2dbc/function/DefaultDatabaseClientBuilder.java index d21e91d35..de61a8195 100644 --- a/src/main/java/org/springframework/data/r2dbc/function/DefaultDatabaseClientBuilder.java +++ b/src/main/java/org/springframework/data/r2dbc/function/DefaultDatabaseClientBuilder.java @@ -93,7 +93,7 @@ class DefaultDatabaseClientBuilder implements DatabaseClient.Builder { Dialect dialect = Database.findDatabase(this.connectionFactory) .orElseThrow(() -> new UnsupportedOperationException( "Cannot determine a Dialect. Configure the dialect by providing DefaultReactiveDataAccessStrategy(Dialect)")) - .latestDialect(); + .defaultDialect(); accessStrategy = new DefaultReactiveDataAccessStrategy(dialect); } diff --git a/src/main/java/org/springframework/data/r2dbc/function/DefaultReactiveDataAccessStrategy.java b/src/main/java/org/springframework/data/r2dbc/function/DefaultReactiveDataAccessStrategy.java index e6666a464..dcf775344 100644 --- a/src/main/java/org/springframework/data/r2dbc/function/DefaultReactiveDataAccessStrategy.java +++ b/src/main/java/org/springframework/data/r2dbc/function/DefaultReactiveDataAccessStrategy.java @@ -196,10 +196,10 @@ public class DefaultReactiveDataAccessStrategy implements ReactiveDataAccessStra @Override public BindableOperation insertAndReturnGeneratedKeys(String table, Set columns) { return new DefaultBindableInsert(dialect.getBindMarkersFactory().create(), table, columns, - dialect.returnGeneratedKeys()); + dialect.generatedKeysClause()); } - /* + /* * (non-Javadoc) * @see org.springframework.data.r2dbc.function.ReactiveDataAccessStrategy#select(java.lang.String, java.util.Set, org.springframework.data.domain.Sort, org.springframework.data.domain.Pageable) */ @@ -283,7 +283,7 @@ public class DefaultReactiveDataAccessStrategy implements ReactiveDataAccessStra }); } - /* + /* * (non-Javadoc) * @see org.springframework.data.r2dbc.function.ReactiveDataAccessStrategy#selectByIdIn(java.lang.String, java.util.Set, java.lang.String) */ @@ -303,7 +303,7 @@ public class DefaultReactiveDataAccessStrategy implements ReactiveDataAccessStra return new DefaultBindableUpdate(dialect.getBindMarkersFactory().create(), table, columns, idColumn); } - /* + /* * (non-Javadoc) * @see org.springframework.data.r2dbc.function.ReactiveDataAccessStrategy#deleteById(java.lang.String, java.lang.String) */ @@ -314,7 +314,7 @@ public class DefaultReactiveDataAccessStrategy implements ReactiveDataAccessStra marker -> String.format("DELETE FROM %s WHERE %s = %s", table, idColumn, marker.getPlaceholder())); } - /* + /* * (non-Javadoc) * @see org.springframework.data.r2dbc.function.ReactiveDataAccessStrategy#deleteByIdIn(java.lang.String, java.lang.String) */ @@ -442,7 +442,7 @@ public class DefaultReactiveDataAccessStrategy implements ReactiveDataAccessStra idMarker.bind(statement, value); } - /* + /* * (non-Javadoc) * @see org.springframework.data.r2dbc.function.BindIdOperation#bindIds(io.r2dbc.spi.Statement, java.lang.Iterable) */ @@ -503,7 +503,7 @@ public class DefaultReactiveDataAccessStrategy implements ReactiveDataAccessStra idMarker.bind(statement, value); } - /* + /* * (non-Javadoc) * @see org.springframework.data.r2dbc.function.BindIdOperation#bindIds(io.r2dbc.spi.Statement, java.lang.Iterable) */ @@ -570,7 +570,7 @@ public class DefaultReactiveDataAccessStrategy implements ReactiveDataAccessStra bindMarker.bind(statement, value); } - /* + /* * (non-Javadoc) * @see org.springframework.data.r2dbc.function.BindIdOperation#bindIds(io.r2dbc.spi.Statement, java.lang.Iterable) */ diff --git a/src/main/java/org/springframework/data/r2dbc/repository/support/BindSpecWrapper.java b/src/main/java/org/springframework/data/r2dbc/repository/support/BindSpecAdapter.java similarity index 70% rename from src/main/java/org/springframework/data/r2dbc/repository/support/BindSpecWrapper.java rename to src/main/java/org/springframework/data/r2dbc/repository/support/BindSpecAdapter.java index bd991e52f..14406434c 100644 --- a/src/main/java/org/springframework/data/r2dbc/repository/support/BindSpecWrapper.java +++ b/src/main/java/org/springframework/data/r2dbc/repository/support/BindSpecAdapter.java @@ -7,41 +7,41 @@ import org.reactivestreams.Publisher; import org.springframework.data.r2dbc.function.DatabaseClient.BindSpec; /** - * Wrapper for {@link BindSpec} to be used with {@link org.springframework.data.r2dbc.dialect.BindMarker} binding. + * Adapter for {@link BindSpec} to be used with {@link org.springframework.data.r2dbc.dialect.BindMarker} binding. * Binding parameters updates the {@link BindSpec} * * @param type of the bind specification. * @author Mark Paluch */ -class BindSpecWrapper> implements Statement> { +class BindSpecAdapter> implements Statement> { private S bindSpec; - private BindSpecWrapper(S bindSpec) { + private BindSpecAdapter(S bindSpec) { this.bindSpec = bindSpec; } /** - * Create a new {@link BindSpecWrapper} for the given {@link BindSpec}. + * Create a new {@link BindSpecAdapter} for the given {@link BindSpec}. * * @param bindSpec the bind specification. * @param type of the bind spec to retain the type through {@link #getBoundOperation()}. - * @return {@link BindSpecWrapper} for the {@link BindSpec}. + * @return {@link BindSpecAdapter} for the {@link BindSpec}. */ - public static > BindSpecWrapper create(S bindSpec) { - return new BindSpecWrapper<>(bindSpec); + public static > BindSpecAdapter create(S bindSpec) { + return new BindSpecAdapter<>(bindSpec); } - /* + /* * (non-Javadoc) * @see io.r2dbc.spi.Statement#add() */ @Override - public BindSpecWrapper add() { + public BindSpecAdapter add() { throw new UnsupportedOperationException(); } - /* + /* * (non-Javadoc) * @see io.r2dbc.spi.Statement#execute() */ @@ -50,45 +50,45 @@ class BindSpecWrapper> implements Statement bind(Object identifier, Object value) { + public BindSpecAdapter bind(Object identifier, Object value) { this.bindSpec = bindSpec.bind((String) identifier, value); return this; } - /* + /* * (non-Javadoc) * @see io.r2dbc.spi.Statement#bind(int, java.lang.Object) */ @Override - public BindSpecWrapper bind(int index, Object value) { + public BindSpecAdapter bind(int index, Object value) { this.bindSpec = bindSpec.bind(index, value); return this; } - /* + /* * (non-Javadoc) * @see io.r2dbc.spi.Statement#bindNull(java.lang.Object, java.lang.Class) */ @Override - public BindSpecWrapper bindNull(Object identifier, Class type) { + public BindSpecAdapter bindNull(Object identifier, Class type) { this.bindSpec = bindSpec.bindNull((String) identifier, type); return this; } - /* + /* * (non-Javadoc) * @see io.r2dbc.spi.Statement#bindNull(int, java.lang.Class) */ @Override - public BindSpecWrapper bindNull(int index, Class type) { + public BindSpecAdapter bindNull(int index, Class type) { this.bindSpec = bindSpec.bindNull(index, type); return this; diff --git a/src/main/java/org/springframework/data/r2dbc/repository/support/SimpleR2dbcRepository.java b/src/main/java/org/springframework/data/r2dbc/repository/support/SimpleR2dbcRepository.java index 7347518e8..238303470 100644 --- a/src/main/java/org/springframework/data/r2dbc/repository/support/SimpleR2dbcRepository.java +++ b/src/main/java/org/springframework/data/r2dbc/repository/support/SimpleR2dbcRepository.java @@ -78,7 +78,7 @@ public class SimpleR2dbcRepository implements ReactiveCrudRepository wrapper = BindSpecWrapper.create(exec); + BindSpecAdapter wrapper = BindSpecAdapter.create(exec); columns.forEach(bind(update, wrapper)); update.bindId(wrapper, id); @@ -123,7 +123,7 @@ public class SimpleR2dbcRepository implements ReactiveCrudRepository wrapper = BindSpecWrapper.create(sql); + BindSpecAdapter wrapper = BindSpecAdapter.create(sql); select.bindId(wrapper, id); return wrapper.getBoundOperation().as(entity.getJavaType()) // @@ -152,7 +152,7 @@ public class SimpleR2dbcRepository implements ReactiveCrudRepository wrapper = BindSpecWrapper.create(sql); + BindSpecAdapter wrapper = BindSpecAdapter.create(sql); select.bindId(wrapper, id); return wrapper.getBoundOperation().as(entity.getJavaType()) // @@ -205,7 +205,7 @@ public class SimpleR2dbcRepository implements ReactiveCrudRepository wrapper = BindSpecWrapper.create(databaseClient.execute().sql(select)); + BindSpecAdapter wrapper = BindSpecAdapter.create(databaseClient.execute().sql(select)); select.bindIds(wrapper, ids); return wrapper.getBoundOperation().as(entity.getJavaType()).fetch().all(); @@ -235,7 +235,7 @@ public class SimpleR2dbcRepository implements ReactiveCrudRepository wrapper = BindSpecWrapper.create(databaseClient.execute().sql(delete)); + BindSpecAdapter wrapper = BindSpecAdapter.create(databaseClient.execute().sql(delete)); delete.bindId(wrapper, id); @@ -262,7 +262,7 @@ public class SimpleR2dbcRepository implements ReactiveCrudRepository wrapper = BindSpecWrapper.create(databaseClient.execute().sql(delete)); + BindSpecAdapter wrapper = BindSpecAdapter.create(databaseClient.execute().sql(delete)); delete.bindIds(wrapper, ids); return wrapper.getBoundOperation().as(entity.getJavaType()).fetch().rowsUpdated(); @@ -324,11 +324,7 @@ public class SimpleR2dbcRepository implements ReactiveCrudRepository bind(BindableOperation operation, Statement statement) { return (k, v) -> { - if (v.getValue() == null) { - operation.bindNull(statement, k, v.getType()); - } else { - operation.bind(statement, k, v.getValue()); - } + operation.bind(statement, v); }; } } diff --git a/src/test/java/org/springframework/data/r2dbc/repository/AbstractR2dbcRepositoryIntegrationTests.java b/src/test/java/org/springframework/data/r2dbc/repository/AbstractR2dbcRepositoryIntegrationTests.java index 74650c257..51a573daf 100644 --- a/src/test/java/org/springframework/data/r2dbc/repository/AbstractR2dbcRepositoryIntegrationTests.java +++ b/src/test/java/org/springframework/data/r2dbc/repository/AbstractR2dbcRepositoryIntegrationTests.java @@ -161,7 +161,7 @@ public abstract class AbstractR2dbcRepositoryIntegrationTests extends R2dbcInteg Database database = Database.findDatabase(createConnectionFactory()).get(); DefaultReactiveDataAccessStrategy dataAccessStrategy = new DefaultReactiveDataAccessStrategy( - database.latestDialect(), new BasicRelationalConverter(mappingContext)); + database.defaultDialect(), new BasicRelationalConverter(mappingContext)); TransactionalDatabaseClient client = TransactionalDatabaseClient.builder() .connectionFactory(createConnectionFactory()).dataAccessStrategy(dataAccessStrategy).build(); diff --git a/src/test/java/org/springframework/data/r2dbc/testing/SqlServerTestSupport.java b/src/test/java/org/springframework/data/r2dbc/testing/SqlServerTestSupport.java index f8cfc2cbc..3fb08ad79 100644 --- a/src/test/java/org/springframework/data/r2dbc/testing/SqlServerTestSupport.java +++ b/src/test/java/org/springframework/data/r2dbc/testing/SqlServerTestSupport.java @@ -47,7 +47,7 @@ public class SqlServerTestSupport { */ private static ExternalDatabase local() { return ProvidedDatabase.builder().hostname("localhost").port(1433).database("master").username("sa") - .password("my1.password").build(); + .password("A_Str0ng_Required_Password").build(); } /**