似たようなことをしようとしていたときに、この質問を見つけました。残念ながら、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) {
// ...
}
}
クラスの名前は SchoolRepositoryCustomImpl ではなく、SchoolRepositoryImpl であることに注意してください。