#1 - Avoid lookup of entities if no revision numbers found.

We now eagerly return an empty Revisions instance in case we don't
find revision numbers for an entity with a given ID. Not doing so 
caused issues with database vendors as they might expect at least a 
single revision number.
This commit is contained in:
Philipp Hügelmeyer
2012-06-06 15:00:18 +02:00
committed by Oliver Gierke
parent ac6d3eab8d
commit 26a51e5210
2 changed files with 8 additions and 2 deletions

View File

@@ -114,7 +114,8 @@ public class EnversRevisionRepositoryImpl<T, ID extends Serializable, N extends
AuditReader reader = AuditReaderFactory.get(entityManager);
List<? extends Number> revisionNumbers = reader.getRevisions(type, id);
return getEntitiesForRevisions((List<N>) revisionNumbers, id, reader);
return revisionNumbers.isEmpty() ? new Revisions<N, T>(Collections.EMPTY_LIST) : getEntitiesForRevisions(
(List<N>) revisionNumbers, id, reader);
}
/*

View File

@@ -15,7 +15,7 @@
*/
package org.springframework.data.envers.repository.support;
import static org.hamcrest.CoreMatchers.*;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.*;
import java.util.Arrays;
@@ -102,4 +102,9 @@ public class RepositoryIntegrationTest {
Revisions<Integer, License> wrapper = new Revisions<Integer, License>(revisions.getContent());
assertThat(wrapper.getLatestRevision(), is(revision));
}
@Test
public void returnsEmptyRevisionsForUnrevisionedEntity() {
assertThat(countryRepository.findRevisions(100L).getContent(), is(hasSize(0)));
}
}