当我试图做类似的事情时,我发现了这个问题。不幸的是,鉴于我在org.springframework.data.repository.query.parser.PartTree看到的:
private static final Pattern PREFIX_TEMPLATE = Pattern.compile("^(find|read|get)(\\p{Upper}.*?)??By");
它似乎不受支持。
相反,我们可以通过创建一个新接口和一个实现它的类来将自定义行为添加到存储库(参见参考手册第 1.4.1 节)。
public interface SchoolRepository extends CrudRepository<School, String>, SchoolRepositoryCustom {
// find... read... get...
}
public interface SchoolRepositoryCustom {
int getCountOfStudents(int studentStatus);
}
@Service
public class SchoolRepositoryImpl implements SchoolRepositoryCustom {
@Autowired
private SchoolRepository schoolRepository;
public int getCountOfStudents(int studentStatus) {
// ...
}
}
请注意,该类名为 SchoolRepositoryImpl,而不是 SchoolRepositoryCustomImpl。