package de.flower.rmt.repository; import com.mysema.query.types.OrderSpecifier; import com.mysema.query.types.Path; import com.mysema.query.types.Predicate; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.querydsl.QueryDslPredicateExecutor; import org.springframework.data.repository.NoRepositoryBean; import java.io.Serializable; import java.util.List; /** * @author flowerrrr */ @NoRepositoryBean public interface IRepository<T, ID extends Serializable> extends JpaRepository<T, ID>, JpaSpecificationExecutor<T>, QueryDslPredicateExecutor<T> { /** * Reattaches object to hibernate sesssion. Used for working with detached objects. * Unpersisted changes are lost. * * @param entity */ @Deprecated void reattach(T entity); void detach(T entity); /** * Marks entity as deleted by setting objectstatus to DELETED. * * @param entity */ void softDelete(T entity); T findOne(Predicate predicate, Path<?>... attributes); List<T> findAll(Predicate predicate); List<T> findAll(Predicate predicate, Path<?>... fetchAttributes); Page<T> findAll(Predicate predicate, Pageable pageable, Path<?>... fetchAttributes); List<T> findAll(Predicate predicate, OrderSpecifier<?> order, Path<?>... attributes); }