Browse Source

Avoid conversion when return value is null.

Closes #1167
2.3.x
Jens Schauder 4 years ago
parent
commit
463d9c37e0
No known key found for this signature in database
GPG Key ID: 45CC872F17423DBF
  1. 2
      spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/AbstractJdbcQuery.java
  2. 22
      spring-data-jdbc/src/test/java/org/springframework/data/jdbc/repository/JdbcRepositoryIntegrationTests.java

2
spring-data-jdbc/src/main/java/org/springframework/data/jdbc/repository/query/AbstractJdbcQuery.java

@ -184,7 +184,7 @@ public abstract class AbstractJdbcQuery implements RepositoryQuery { @@ -184,7 +184,7 @@ public abstract class AbstractJdbcQuery implements RepositoryQuery {
T object = delegate.mapRow(rs, rowNum);
return converter.convert(object);
return object == null ? null : converter.convert(object);
}
}
}

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

@ -37,7 +37,6 @@ import java.util.List; @@ -37,7 +37,6 @@ import java.util.List;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.PropertiesFactoryBean;
import org.springframework.context.ApplicationListener;
@ -68,6 +67,7 @@ import org.springframework.data.repository.query.Param; @@ -68,6 +67,7 @@ import org.springframework.data.repository.query.Param;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.lang.Nullable;
import org.springframework.test.context.TestExecutionListeners;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.jdbc.JdbcTestUtils;
@ -549,6 +549,22 @@ public class JdbcRepositoryIntegrationTests { @@ -549,6 +549,22 @@ public class JdbcRepositoryIntegrationTests {
assertThat(result).extracting(e -> e.idProp).containsExactly(two.idProp);
}
@Test // GH-1167
void stringResult() {
repository.save(createDummyEntity()); // just ensure we have data in the table
assertThat(repository.returnInput("HELLO")).isEqualTo("HELLO");
}
@Test // GH-1167
void nullStringResult() {
repository.save(createDummyEntity()); // just ensure we have data in the table
assertThat(repository.returnInput(null)).isNull();
}
private Instant createDummyBeforeAndAfterNow() {
Instant now = Instant.now();
@ -625,6 +641,10 @@ public class JdbcRepositoryIntegrationTests { @@ -625,6 +641,10 @@ public class JdbcRepositoryIntegrationTests {
List<DummyEntity> findByRef(int ref);
List<DummyEntity> findByRef(AggregateReference<DummyEntity, Long> ref);
@Query("SELECT CAST(:hello AS CHAR(5)) FROM DUMMY_ENTITY")
@Nullable
String returnInput(@Nullable String hello);
}
@Configuration

Loading…
Cancel
Save