spring data jpa查询问题?
加文哥 2017-11-23 11:54:52 各位大神:
小弟刚学jpa ,我这里是多表查询,分页,模糊查询,动态查询,当我把查询条件封装到querySpecifi对象中,在到里不知道怎么使用querySpecifi对象,望大神指点!
service层:
Specification querySpecifi = new Specification<CrawlerConten>(){
@Override
public Predicate toPredicate(Root<CrawlerConten> root, CriteriaQuery<?> criteriaquery,
CriteriaBuilder criteriabuilder) {
List<Predicate> predicates = new ArrayList<>();
if(userId!=-1){
predicates.add(criteriabuilder.equal(root.get("publishid"), userId));
}
if(keyword!=null&&!keyword.equals("")){
predicates.add(criteriabuilder.like(root.get("title"), "%"+keyword+"%"));
}
return criteriabuilder.and(predicates.toArray(new Predicate[predicates.size()]));
}
};
Page<CrawlerConten> page = contentDao.findByPublishid(querySpecifi, pageable);
dao层:
@Query("SELECT gc.id as id,gc.publishid as publishid,gc.contentId as contentId,gc.gpId as gpId,gp.gpName as gpName,c.title as title,c.content as content,c.contentPath as contentPath,c.contentType as contentType,c.label as label,gc.publishDate as publishDate FROM GpContent gc,Gp gp,Content c where gc.gpId = gp.id and gc.contentId = c.id ")
Page<CrawlerConten> findByPublishid(Specification querySpecifi,
Pageable pageable);