SchematronCriteriaSpecs { public static Specification<SchematronCriteria> hasSchematronId(final int schematronId) { return new Specification<SchematronCriteria>() { @Override public Predicate toPredicate(Root<SchematronCriteria> root, CriteriaQuery<?> query, CriteriaBuilder cb) { final Path<Integer> schematronIdPath = root.get(SchematronCriteria_.group).get(SchematronCriteriaGroup_.id).get (SchematronCriteriaGroupId_.schematronId); return cb.equal(schematronIdPath, schematronId); } }; }  static Specification<SchematronCriteria> hasSchematronId(final int schematronId); static Specification<SchematronCriteria> hasGroupName(final String name);  }
@Test public void testHasSchematronId() throws Exception { SchematronCriteriaGroup group1 = newGroup(_inc, _schematronRepository); group1 = _criteriaGroupRepository.saveAndFlush(group1); SchematronCriteriaGroup group2 = newGroup(_inc, _schematronRepository); group2 = _criteriaGroupRepository.saveAndFlush(group2); SchematronCriteriaGroup group3 = newGroup(_inc, _schematronRepository); group3.setSchematron(group1.getSchematron()); group3 = _criteriaGroupRepository.saveAndFlush(group3); final List<SchematronCriteria> found = _criteriaRepository.findAll(SchematronCriteriaSpecs.hasSchematronId(group1.getSchematron() .getId())); assertCorrectCriteriaFound(group1, group2, group3, found); }