DATAJDBC-124 - findById now returns Optional.empty when no data is found.

The uderlying JdbcEntityTemplate still throws exceptions coming from the NamedParameterJdbcTemplate.
This commit is contained in:
Jens Schauder
2017-08-15 07:14:08 +02:00
committed by Greg Turnquist
parent 1f2dc16d05
commit 2067fb6952
2 changed files with 14 additions and 2 deletions

View File

@@ -19,9 +19,9 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.data.jdbc.core.JdbcEntityOperations;
import org.springframework.data.jdbc.core.JdbcEntityTemplate;
import org.springframework.data.jdbc.mapping.model.JdbcPersistentEntity;
import org.springframework.data.jdbc.mapping.model.JdbcPersistentEntityInformation;
import org.springframework.data.repository.CrudRepository;
@@ -76,7 +76,11 @@ public class SimpleJdbcRepository<T, ID> implements CrudRepository<T, ID> {
@Override
public Optional<T> findById(ID id) {
return Optional.ofNullable(entityOperations.findById(id, entityInformation.getJavaType()));
try {
return Optional.of(entityOperations.findById(id, entityInformation.getJavaType()));
} catch (EmptyResultDataAccessException ex) {
return Optional.empty();
}
}
/*

View File

@@ -233,6 +233,14 @@ public class JdbcRepositoryIntegrationTests {
.containsExactlyInAnyOrder(entity.getName(), other.getName());
}
@Test // DATAJDBC-112
public void findByIdReturnsEmptyWhenNoneFound() {
// NOT saving anything, so DB is empty
assertThat(repository.findById(-1L)).isEmpty();
}
private static DummyEntity createDummyEntity() {
DummyEntity entity = new DummyEntity();