Browse Source

Polishing.

Fix Oracle test setup.
Formatting.
Restructure some code
Author tags.

Original pull request #2079
See #2007
pull/2076/merge
Jens Schauder 5 months ago
parent
commit
d98ef188dd
No known key found for this signature in database
GPG Key ID: 2BE5D185CD2A1CE6
  1. 12
      spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/StringBasedJdbcQuery.java
  2. 21
      spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/JdbcRepositoryIntegrationTests.java
  3. 54
      spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/query/StringBasedJdbcQueryUnitTests.java
  4. 5
      spring-data-jdbc/src/test/resources/org.springframework.data.jdbc.repository/JdbcRepositoryIntegrationTests-db2.sql
  5. 5
      spring-data-jdbc/src/test/resources/org.springframework.data.jdbc.repository/JdbcRepositoryIntegrationTests-h2.sql
  6. 5
      spring-data-jdbc/src/test/resources/org.springframework.data.jdbc.repository/JdbcRepositoryIntegrationTests-hsql.sql
  7. 5
      spring-data-jdbc/src/test/resources/org.springframework.data.jdbc.repository/JdbcRepositoryIntegrationTests-mariadb.sql
  8. 5
      spring-data-jdbc/src/test/resources/org.springframework.data.jdbc.repository/JdbcRepositoryIntegrationTests-mssql.sql
  9. 7
      spring-data-jdbc/src/test/resources/org.springframework.data.jdbc.repository/JdbcRepositoryIntegrationTests-mysql.sql
  10. 5
      spring-data-jdbc/src/test/resources/org.springframework.data.jdbc.repository/JdbcRepositoryIntegrationTests-oracle.sql
  11. 3
      spring-data-jdbc/src/test/resources/org.springframework.data.jdbc.repository/JdbcRepositoryIntegrationTests-postgres.sql

12
spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/StringBasedJdbcQuery.java

@ -15,7 +15,7 @@ @@ -15,7 +15,7 @@
*/
package org.springframework.data.jdbc.repository.query;
import static org.springframework.data.jdbc.repository.query.JdbcQueryExecution.ResultProcessingConverter;
import static org.springframework.data.jdbc.repository.query.JdbcQueryExecution.*;
import java.lang.reflect.Array;
import java.lang.reflect.Constructor;
@ -186,11 +186,8 @@ public class StringBasedJdbcQuery extends AbstractJdbcQuery { @@ -186,11 +186,8 @@ public class StringBasedJdbcQuery extends AbstractJdbcQuery {
return this.query;
}
private static void addEvaluatedParameterToParameterSource(
MapSqlParameterSource parameterMap,
String paramName,
ValueExpression valueExpression,
ValueEvaluationContext evaluationContext) {
private static void addEvaluatedParameterToParameterSource(MapSqlParameterSource parameterMap, String paramName,
ValueExpression valueExpression, ValueEvaluationContext evaluationContext) {
Object evaluatedValue = valueExpression.evaluate(evaluationContext);
Class<?> valueType = valueExpression.getValueType(evaluationContext);
@ -215,8 +212,7 @@ public class StringBasedJdbcQuery extends AbstractJdbcQuery { @@ -215,8 +212,7 @@ public class StringBasedJdbcQuery extends AbstractJdbcQuery {
}
private static SQLType getSqlType(Class<?> valueType) {
Class<?> resolvedPrimitiveType = JdbcColumnTypes.INSTANCE.resolvePrimitiveType(valueType);
return JdbcUtil.targetSqlTypeFor(resolvedPrimitiveType);
return JdbcUtil.targetSqlTypeFor(JdbcColumnTypes.INSTANCE.resolvePrimitiveType(valueType));
}
private JdbcQueryExecution<?> createJdbcQueryExecution(RelationalParameterAccessor accessor,

21
spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/JdbcRepositoryIntegrationTests.java

@ -44,7 +44,6 @@ import org.junit.jupiter.params.provider.Arguments; @@ -44,7 +44,6 @@ import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.EnumSource;
import org.junit.jupiter.params.provider.MethodSource;
import org.junit.jupiter.params.provider.NullSource;
import org.junit.jupiter.params.provider.ValueSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.PropertiesFactoryBean;
import org.springframework.context.ApplicationListener;
@ -352,16 +351,15 @@ public class JdbcRepositoryIntegrationTests { @@ -352,16 +351,15 @@ public class JdbcRepositoryIntegrationTests {
@ParameterizedTest
@NullSource
@EnumSource(value = EnumClass.class)
@EnumSource(value = EnumClass.class) // GH-2007
void shouldSaveWithCustomSpellExpressions(EnumClass value) {
expressionSqlTypePropagationRepository.saveWithSpel(new ExpressionSqlTypePropagation(1L, value));
var found = expressionSqlTypePropagationRepository.findById(1L);
ExpressionSqlTypePropagation reloaded = expressionSqlTypePropagationRepository.findById(1L).orElseThrow();
assertThat(found).isPresent().hasValueSatisfying(entity -> {
assertThat(entity.getIdentifier()).isEqualTo(1L);
assertThat(entity.getEnumClass()).isEqualTo(value);
});
assertThat(reloaded.getIdentifier()).isEqualTo(1L);
assertThat(reloaded.getEnumClass()).isEqualTo(value);
}
@Test // DATAJDBC-98
@ -1598,11 +1596,10 @@ public class JdbcRepositoryIntegrationTests { @@ -1598,11 +1596,10 @@ public class JdbcRepositoryIntegrationTests {
@Query(value = """
INSERT INTO EXPRESSION_SQL_TYPE_PROPAGATION(identifier, enum_class)
VALUES(:#{#expressionSqlTypePropagation.identifier}, :#{#expressionSqlTypePropagation.enumClass})
""")
""")
void saveWithSpel(@Param("expressionSqlTypePropagation") ExpressionSqlTypePropagation expressionSqlTypePropagation);
}
interface DummyProjection {
String getName();
}
@ -1930,8 +1927,7 @@ public class JdbcRepositoryIntegrationTests { @@ -1930,8 +1927,7 @@ public class JdbcRepositoryIntegrationTests {
static class ExpressionSqlTypePropagation {
@Id
Long identifier;
@Id Long identifier;
EnumClass enumClass;
@ -1950,8 +1946,7 @@ public class JdbcRepositoryIntegrationTests { @@ -1950,8 +1946,7 @@ public class JdbcRepositoryIntegrationTests {
}
enum EnumClass {
ACTIVE,
DELETE
ACTIVE, DELETE
}
static class EntityWithSequence {

54
spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/query/StringBasedJdbcQueryUnitTests.java

@ -15,17 +15,8 @@ @@ -15,17 +15,8 @@
*/
package org.springframework.data.jdbc.repository.query;
import static org.assertj.core.api.Assertions.LIST;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.anyString;
import static org.mockito.Mockito.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.assertj.core.api.Assertions.*;
import static org.mockito.Mockito.*;
import java.lang.reflect.Method;
import java.sql.JDBCType;
@ -40,8 +31,10 @@ import java.util.List; @@ -40,8 +31,10 @@ import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.assertj.core.groups.Tuple;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;
@ -92,6 +85,7 @@ import org.springframework.util.ReflectionUtils; @@ -92,6 +85,7 @@ import org.springframework.util.ReflectionUtils;
* @author Chirag Tailor
* @author Christopher Klein
* @author Marcin Grzejszczak
* @author Mikhail Polivakha
*/
class StringBasedJdbcQueryUnitTests {
@ -322,23 +316,17 @@ class StringBasedJdbcQueryUnitTests { @@ -322,23 +316,17 @@ class StringBasedJdbcQueryUnitTests {
SqlParameterSource sqlParameterSource = forMethod("spelContainingQuery", ComplexEntity.class)
.withArguments(expressionRootObject).extractParameterSource();
var expectedSqlTypes = Map.<Object, Integer>of(
type, Types.VARCHAR,
score, Types.INTEGER,
creationDate, Types.TIMESTAMP,
dayOfWeek, Types.VARCHAR
);
Set<Tuple> valueTypePairs = Arrays.stream(sqlParameterSource.getParameterNames()) //
.filter(n -> !n.equalsIgnoreCase("complexEntity")) //
.map(n -> tuple(sqlParameterSource.getValue(n), sqlParameterSource.getSqlType(n))) //
.collect(Collectors.toSet());
assertThat(sqlParameterSource.getParameterNames()).hasSize(5); // 1 root + 4 expressions
assertThat(sqlParameterSource.getParameterNames()).satisfies(parameterNames -> {
for (var paramName : parameterNames) {
if (paramName.equalsIgnoreCase("complexEntity")) {
continue; // do not check root for sqlType
}
Object value = sqlParameterSource.getValue(paramName);
assertThat(sqlParameterSource.getSqlType(paramName)).isEqualTo(expectedSqlTypes.get(value));
}
});
assertThat(valueTypePairs).containsExactlyInAnyOrder(
tuple(type, Types.VARCHAR),
tuple(score, Types.INTEGER),
tuple(creationDate, Types.TIMESTAMP),
tuple(dayOfWeek, Types.VARCHAR)
);
}
@Test // GH-1212
@ -549,12 +537,12 @@ class StringBasedJdbcQueryUnitTests { @@ -549,12 +537,12 @@ class StringBasedJdbcQueryUnitTests {
List<Object> findByEnumTypeIn(Set<Direction> directions);
@Query(value = """
SELECT * FROM my_table
WHERE t = :#{#complexEntity.type}
AND s = :#{#complexEntity.score}
AND cd = :#{#complexEntity.creationDate}
AND dow = :#{#complexEntity.dayOfWeek}
""")
SELECT * FROM my_table
WHERE t = :#{#complexEntity.type}
AND s = :#{#complexEntity.score}
AND cd = :#{#complexEntity.creationDate}
AND dow = :#{#complexEntity.dayOfWeek}
""")
List<Object> spelContainingQuery(ComplexEntity complexEntity);
@Query(value = "some sql statement")

5
spring-data-jdbc/src/test/resources/org.springframework.data.jdbc.repository/JdbcRepositoryIntegrationTests-db2.sql

@ -65,7 +65,8 @@ CREATE TABLE PROVIDED_ID_ENTITY @@ -65,7 +65,8 @@ CREATE TABLE PROVIDED_ID_ENTITY
NAME VARCHAR(30)
);
CREATE TABLE EXPRESSION_SQL_TYPE_PROPAGATION(
IDENTIFIER BIGINT NOT NULL PRIMARY KEY,
CREATE TABLE EXPRESSION_SQL_TYPE_PROPAGATION
(
IDENTIFIER BIGINT NOT NULL PRIMARY KEY,
ENUM_CLASS VARCHAR(30)
);

5
spring-data-jdbc/src/test/resources/org.springframework.data.jdbc.repository/JdbcRepositoryIntegrationTests-h2.sql

@ -55,7 +55,8 @@ CREATE TABLE PROVIDED_ID_ENTITY @@ -55,7 +55,8 @@ CREATE TABLE PROVIDED_ID_ENTITY
NAME VARCHAR(30)
);
CREATE TABLE EXPRESSION_SQL_TYPE_PROPAGATION(
IDENTIFIER BIGINT PRIMARY KEY,
CREATE TABLE EXPRESSION_SQL_TYPE_PROPAGATION
(
IDENTIFIER BIGINT PRIMARY KEY,
ENUM_CLASS VARCHAR(30)
);

5
spring-data-jdbc/src/test/resources/org.springframework.data.jdbc.repository/JdbcRepositoryIntegrationTests-hsql.sql

@ -55,7 +55,8 @@ CREATE TABLE PROVIDED_ID_ENTITY @@ -55,7 +55,8 @@ CREATE TABLE PROVIDED_ID_ENTITY
NAME VARCHAR(30)
);
CREATE TABLE EXPRESSION_SQL_TYPE_PROPAGATION(
IDENTIFIER BIGINT PRIMARY KEY,
CREATE TABLE EXPRESSION_SQL_TYPE_PROPAGATION
(
IDENTIFIER BIGINT PRIMARY KEY,
ENUM_CLASS VARCHAR(30)
);

5
spring-data-jdbc/src/test/resources/org.springframework.data.jdbc.repository/JdbcRepositoryIntegrationTests-mariadb.sql

@ -55,7 +55,8 @@ CREATE TABLE PROVIDED_ID_ENTITY @@ -55,7 +55,8 @@ CREATE TABLE PROVIDED_ID_ENTITY
NAME VARCHAR(30)
);
CREATE TABLE EXPRESSION_SQL_TYPE_PROPAGATION(
IDENTIFIER BIGINT PRIMARY KEY,
CREATE TABLE EXPRESSION_SQL_TYPE_PROPAGATION
(
IDENTIFIER BIGINT PRIMARY KEY,
ENUM_CLASS VARCHAR(30)
);

5
spring-data-jdbc/src/test/resources/org.springframework.data.jdbc.repository/JdbcRepositoryIntegrationTests-mssql.sql

@ -65,7 +65,8 @@ CREATE TABLE PROVIDED_ID_ENTITY @@ -65,7 +65,8 @@ CREATE TABLE PROVIDED_ID_ENTITY
NAME VARCHAR(30)
);
CREATE TABLE EXPRESSION_SQL_TYPE_PROPAGATION(
IDENTIFIER BIGINT PRIMARY KEY,
CREATE TABLE EXPRESSION_SQL_TYPE_PROPAGATION
(
IDENTIFIER BIGINT PRIMARY KEY,
ENUM_CLASS VARCHAR(30)
);

7
spring-data-jdbc/src/test/resources/org.springframework.data.jdbc.repository/JdbcRepositoryIntegrationTests-mysql.sql

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
SET
SQL_MODE = 'ALLOW_INVALID_DATES';
SQL_MODE = 'ALLOW_INVALID_DATES';
CREATE TABLE DUMMY_ENTITY
(
@ -50,7 +50,8 @@ CREATE TABLE PROVIDED_ID_ENTITY @@ -50,7 +50,8 @@ CREATE TABLE PROVIDED_ID_ENTITY
NAME VARCHAR(30)
);
CREATE TABLE EXPRESSION_SQL_TYPE_PROPAGATION(
IDENTIFIER BIGINT PRIMARY KEY,
CREATE TABLE EXPRESSION_SQL_TYPE_PROPAGATION
(
IDENTIFIER BIGINT PRIMARY KEY,
ENUM_CLASS VARCHAR(30)
);

5
spring-data-jdbc/src/test/resources/org.springframework.data.jdbc.repository/JdbcRepositoryIntegrationTests-oracle.sql

@ -65,7 +65,8 @@ CREATE TABLE PROVIDED_ID_ENTITY @@ -65,7 +65,8 @@ CREATE TABLE PROVIDED_ID_ENTITY
NAME VARCHAR2(30)
);
CREATE TABLE EXPRESSION_SQL_TYPE_PROPAGATION(
IDENTIFIER BIGINT PRIMARY KEY,
CREATE TABLE EXPRESSION_SQL_TYPE_PROPAGATION
(
IDENTIFIER NUMBER PRIMARY KEY,
ENUM_CLASS VARCHAR2(30)
);

3
spring-data-jdbc/src/test/resources/org.springframework.data.jdbc.repository/JdbcRepositoryIntegrationTests-postgres.sql

@ -65,7 +65,8 @@ CREATE TABLE PROVIDED_ID_ENTITY @@ -65,7 +65,8 @@ CREATE TABLE PROVIDED_ID_ENTITY
NAME VARCHAR(30)
);
CREATE TABLE EXPRESSION_SQL_TYPE_PROPAGATION(
CREATE TABLE EXPRESSION_SQL_TYPE_PROPAGATION
(
IDENTIFIER BIGINT PRIMARY KEY,
ENUM_CLASS VARCHAR(30)
);

Loading…
Cancel
Save