package com.cosium.spring.data.jpa.entity.graph.repository.support; import com.cosium.spring.data.jpa.entity.graph.domain.EntityGraph; import com.cosium.spring.data.jpa.entity.graph.repository.EntityGraphJpaRepository; import com.cosium.spring.data.jpa.entity.graph.repository.EntityGraphJpaSpecificationExecutor; import org.springframework.data.domain.Example; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.repository.support.JpaEntityInformation; import org.springframework.data.jpa.repository.support.SimpleJpaRepository; import javax.persistence.EntityManager; import java.io.Serializable; import java.util.List; import java.util.Optional; /** * A {@link SimpleJpaRepository} that supports {@link EntityGraph} passed through method arguments. * * <p>Created on 22/11/16. * * @author Reda.Housni-Alaoui */ public class EntityGraphSimpleJpaRepository<T, ID extends Serializable> extends SimpleJpaRepository<T, ID> implements EntityGraphJpaRepository<T, ID>, EntityGraphJpaSpecificationExecutor<T> { public EntityGraphSimpleJpaRepository( JpaEntityInformation<T, ?> entityInformation, EntityManager entityManager) { super(entityInformation, entityManager); } public EntityGraphSimpleJpaRepository(Class<T> domainClass, EntityManager entityManager) { super(domainClass, entityManager); } @Override public Optional<T> findOne(Specification<T> spec, EntityGraph entityGraph) { return findOne(spec); } @Override public List<T> findAll(Specification<T> spec, EntityGraph entityGraph) { return findAll(spec); } @Override public Page<T> findAll(Specification<T> spec, Pageable pageable, EntityGraph entityGraph) { return findAll(spec, pageable); } @Override public List<T> findAll(Specification<T> spec, Sort sort, EntityGraph entityGraph) { return findAll(spec, sort); } @Override public <S extends T> Page<S> findAll( Example<S> example, Pageable pageable, EntityGraph entityGraph) { return findAll(example, pageable); } @Override public <S extends T> Optional<S> findOne(Example<S> example, EntityGraph entityGraph) { return findOne(example); } @Override public Optional<T> findById(ID id, EntityGraph entityGraph) { return findById(id); } @Override public Page<T> findAll(Pageable pageable, EntityGraph entityGraph) { return findAll(pageable); } @Override public <S extends T> List<S> findAll(Example<S> example, Sort sort, EntityGraph entityGraph) { return findAll(example, sort); } @Override public <S extends T> List<S> findAll(Example<S> example, EntityGraph entityGraph) { return findAll(example); } @Override public List<T> findAllById(Iterable<ID> ids, EntityGraph entityGraph) { return findAllById(ids); } @Override public Iterable<T> findAll(Sort sort, EntityGraph entityGraph) { return findAll(sort); } @Override public Iterable<T> findAll(EntityGraph entityGraph) { return findAll(); } }