Avoid conversion when return value is null.

Closes #1167
This commit is contained in:
Jens Schauder
2022-02-21 14:54:22 +01:00
parent 71cad5ff2c
commit a4e04dde56
2 changed files with 22 additions and 2 deletions

View File

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

View File

@@ -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;
@@ -70,6 +69,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;
@@ -559,6 +559,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();
@@ -640,6 +656,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