public Page<Material> findByMaterialList(Long subjectId,Long subjectGroupId, Material material, Pageable pageable) { Subject subject = subjectRelationRepository.findOne(subjectId); long[] ids = subjectLearingMapper.findMaterialId(subjectId, subjectGroupId); Specification<Material> specification = new Specification<Material>() { @Override public Predicate toPredicate(Root<Material> root, CriteriaQuery<?> query, CriteriaBuilder cb) { List<Predicate> list = new ArrayList<Predicate>(); Predicate isDeleted = cb.equal(root.get("isDeleted"), false); list.add(isDeleted); if(StringUtils.isNotEmpty(material.getName())) { Predicate name = cb.and(cb.like(cb.lower(root.get("name")), "%" + StringUtils.trim(material.getName()).toLowerCase() + "%")); list.add(name); } Predicate materialGroup = cb.and( cb.equal(root.get("materialGroup").get("id"), subject.getMaterialGroup().getId())); list.add(materialGroup); In<Long> in = cb.in(root.get("id")); for (Long id : ids) { in.value(id); } list.add(in); Predicate[] p = new Predicate[list.size()]; return cb.and(list.toArray(p)); } }; return this.materialService.findAll(specification, pageable); }
sql语句
SELECT material0_.id AS id1_139_, material0_.created_by AS created_7_139_, material0_.created_date AS created_2_139_, material0_.last_modified_by AS last_mod8_139_, material0_.last_modified_date AS last_mod3_139_, material0_.is_deleted AS is_delet4_139_, material0_.description AS descript5_139_, material0_.document_info_id AS document9_139_, material0_.group_id AS group_i10_139_, material0_. NAME AS name6_139_ FROM lrn_material material0_ WHERE material0_.is_deleted = 0 AND material0_.group_id = 447 AND (material0_.id IN(26, 30)) LIMIT ?