diff --git a/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphCrudRepository.java b/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphCrudRepository.java index 50102af..3feabba 100644 --- a/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphCrudRepository.java +++ b/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphCrudRepository.java @@ -1,8 +1,9 @@ package com.cosium.spring.data.jpa.entity.graph.repository; import com.cosium.spring.data.jpa.entity.graph.domain2.EntityGraph; +import java.util.List; import java.util.Optional; -import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.ListCrudRepository; import org.springframework.data.repository.NoRepositoryBean; /** @@ -12,20 +13,20 @@ */ @NoRepositoryBean public interface EntityGraphCrudRepository<T, ID> - extends CrudRepository<T, ID>, EntityGraphRepository<T, ID> { + extends ListCrudRepository<T, ID>, EntityGraphRepository<T, ID> { /** - * @see CrudRepository#findById(Object) + * @see ListCrudRepository#findById(Object) */ Optional<T> findById(ID id, EntityGraph entityGraph); /** - * @see CrudRepository#findAllById(Iterable) + * @see ListCrudRepository#findAllById(Iterable) */ - Iterable<T> findAllById(Iterable<ID> ids, EntityGraph entityGraph); + List<T> findAllById(Iterable<ID> ids, EntityGraph entityGraph); /** - * @see CrudRepository#findAll() + * @see ListCrudRepository#findAll() */ - Iterable<T> findAll(EntityGraph entityGraph); + List<T> findAll(EntityGraph entityGraph); } diff --git a/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphJpaRepository.java b/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphJpaRepository.java index 45f4397..cb713e9 100644 --- a/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphJpaRepository.java +++ b/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphJpaRepository.java @@ -11,5 +11,6 @@ @NoRepositoryBean public interface EntityGraphJpaRepository<T, ID> extends JpaRepository<T, ID>, + EntityGraphCrudRepository<T, ID>, EntityGraphPagingAndSortingRepository<T, ID>, EntityGraphQueryByExampleExecutor<T> {} diff --git a/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphPagingAndSortingRepository.java b/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphPagingAndSortingRepository.java index b6ada27..67e4bc4 100644 --- a/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphPagingAndSortingRepository.java +++ b/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphPagingAndSortingRepository.java @@ -1,11 +1,12 @@ package com.cosium.spring.data.jpa.entity.graph.repository; import com.cosium.spring.data.jpa.entity.graph.domain2.EntityGraph; +import java.util.List; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; +import org.springframework.data.repository.ListPagingAndSortingRepository; import org.springframework.data.repository.NoRepositoryBean; -import org.springframework.data.repository.PagingAndSortingRepository; /** * Created on 18/03/17. @@ -14,15 +15,15 @@ */ @NoRepositoryBean public interface EntityGraphPagingAndSortingRepository<T, ID> - extends PagingAndSortingRepository<T, ID>, EntityGraphCrudRepository<T, ID> { + extends ListPagingAndSortingRepository<T, ID>, EntityGraphRepository<T, ID> { /** - * @see PagingAndSortingRepository#findAll(Pageable) + * @see ListPagingAndSortingRepository#findAll(Pageable) */ Page<T> findAll(Pageable pageable, EntityGraph entityGraph); /** - * @see PagingAndSortingRepository#findAll(Sort) + * @see ListPagingAndSortingRepository#findAll(Sort) */ - Iterable<T> findAll(Sort sort, EntityGraph entityGraph); + List<T> findAll(Sort sort, EntityGraph entityGraph); } diff --git a/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphQueryByExampleExecutor.java b/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphQueryByExampleExecutor.java index 9c60bd4..14fe8e6 100644 --- a/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphQueryByExampleExecutor.java +++ b/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphQueryByExampleExecutor.java @@ -8,7 +8,7 @@ import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.repository.NoRepositoryBean; -import org.springframework.data.repository.query.QueryByExampleExecutor; +import org.springframework.data.repository.query.ListQueryByExampleExecutor; /** * Created on 18/03/17. @@ -16,25 +16,25 @@ * @author Reda.Housni-Alaoui */ @NoRepositoryBean -public interface EntityGraphQueryByExampleExecutor<T> extends QueryByExampleExecutor<T> { +public interface EntityGraphQueryByExampleExecutor<T> extends ListQueryByExampleExecutor<T> { /** - * @see QueryByExampleExecutor#findAll(Example, Pageable) + * @see ListQueryByExampleExecutor#findAll(Example, Pageable) */ <S extends T> Page<S> findAll(Example<S> example, Pageable pageable, EntityGraph entityGraph); /** - * @see QueryByExampleExecutor#findOne(Example) + * @see ListQueryByExampleExecutor#findOne(Example) */ <S extends T> Optional<S> findOne(Example<S> example, EntityGraph entityGraph); /** - * @see QueryByExampleExecutor#findAll(Example, Sort) + * @see ListQueryByExampleExecutor#findAll(Example, Sort) */ <S extends T> List<S> findAll(Example<S> example, Sort sort, EntityGraph entityGraph); /** - * @see QueryByExampleExecutor#findAll(Example) + * @see ListQueryByExampleExecutor#findAll(Example) */ <S extends T> List<S> findAll(Example<S> example, EntityGraph entityGraph); } diff --git a/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/support/EntityGraphSimpleJpaRepository.java b/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/support/EntityGraphSimpleJpaRepository.java index f0b9dc8..1247373 100644 --- a/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/support/EntityGraphSimpleJpaRepository.java +++ b/core/src/main/java/com/cosium/spring/data/jpa/entity/graph/repository/support/EntityGraphSimpleJpaRepository.java @@ -90,12 +90,12 @@ public List<T> findAllById(Iterable<ID> ids, EntityGraph entityGraph) { } @Override - public Iterable<T> findAll(Sort sort, EntityGraph entityGraph) { + public List<T> findAll(Sort sort, EntityGraph entityGraph) { return findAll(sort); } @Override - public Iterable<T> findAll(EntityGraph entityGraph) { + public List<T> findAll(EntityGraph entityGraph) { return findAll(); } } diff --git a/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphJpaRepositoryTest.java b/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphJpaRepositoryTest.java index 5c2c200..42bfa8a 100644 --- a/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphJpaRepositoryTest.java +++ b/core/src/test/java/com/cosium/spring/data/jpa/entity/graph/repository/EntityGraphJpaRepositoryTest.java @@ -10,6 +10,7 @@ import com.cosium.spring.data.jpa.entity.graph.domain2.NamedEntityGraph; import com.cosium.spring.data.jpa.entity.graph.repository.exception.InapplicableEntityGraphException; import com.cosium.spring.data.jpa.entity.graph.sample.Brand; +import com.cosium.spring.data.jpa.entity.graph.sample.BrandEntityGraph; import com.cosium.spring.data.jpa.entity.graph.sample.Product; import com.cosium.spring.data.jpa.entity.graph.sample.ProductEntityGraph; import com.github.springtestdbunit.annotation.DatabaseSetup; @@ -331,6 +332,22 @@ void test23() { assertThat(productName).isNotNull(); } + @Transactional + @Test + @DisplayName( + "Given an EntityGraphJpaRepository when calling a standard findAll method then a List should be returned (no matter whether an entitygraph is provided or not)") + void test24() { + long brandId = 1; + + List<Brand> brandsWithoutEntityGraph = brandRepository.findAllById(List.of(brandId)); + assertThat(brandsWithoutEntityGraph).hasSize(1); + + List<Brand> brandsWithEntityGraph = + brandRepository.findAllById( + List.of(brandId), BrandEntityGraph.____().products().____.____()); + assertThat(brandsWithEntityGraph).hasSize(1); + } + private abstract static class EntityGraphSpecification<T> implements Specification<T>, EntityGraph { @@ -355,7 +372,7 @@ public interface ProductRepository @org.springframework.data.jpa.repository.EntityGraph(attributePaths = "brand") @Override - Iterable<Product> findAll(EntityGraph entityGraph); + List<Product> findAll(EntityGraph entityGraph); @org.springframework.data.jpa.repository.EntityGraph(attributePaths = "brand") List<Product> findByName(String name, EntityGraph entityGraph);