Skip to content

Instantly share code, notes, and snippets.

@ebongzzang
Created May 29, 2018 05:00
Show Gist options
  • Save ebongzzang/8b98724d25564e18c25f6a5175b2d34b to your computer and use it in GitHub Desktop.
Save ebongzzang/8b98724d25564e18c25f6a5175b2d34b to your computer and use it in GitHub Desktop.
spring-data-jpa implement custom repository with querydsl
import java.util.Collection;
import java.util.Set;
public interface SegmentCategoryCustomRepo {
Set<Long> findSegmentsByCategoryId(Collection<Long> categoryIds);
}
import com.google.common.collect.Sets;
import com.querydsl.jpa.impl.JPAQueryFactory;
import org.springframework.stereotype.Repository;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import java.util.Collection;
import java.util.List;
import java.util.Set;
@Repository
public class SegmentCategoryCustomRepoImpl implements SegmentCategoryCustomRepo {
// set Repository annotate only repository implemntation
@PersistenceContext
EntityManager entityManager;
@Override
public Set<Long> findSegmentsByCategoryId(Collection<Long> categoryIds) {
List<Long> categoryIdToSegmentIds = new JPAQueryFactory(entityManager)
.select(segmentCategory.segment.id)
.from(segmentCategory)
.where(segmentCategory.category.id.in(categoryIds))
.fetch();
return Sets.newHashSet(categoryIdToSegmentIds);
}
}
import org.springframework.data.querydsl.QueryDslPredicateExecutor;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import tv.anypoint.device.domain.SegmentCategory;
@Repository
public interface SegmentCategoryRepo extends CrudRepository<SegmentCategory, Long>, QueryDslPredicateExecutor<SegmentCategory>, SegmentCategoryCustomRepo {
SegmentCategory findByCategoryId(long id);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment