Java 按方法名创建的查询始终返回零计数
我试图统计一个表中名字与给定字符串匹配的学生。Lateron我想使用contains来查找名字包含给定字符串的学生 我在控制器中创建了端点:Java 按方法名创建的查询始终返回零计数,java,spring,hibernate,Java,Spring,Hibernate,我试图统计一个表中名字与给定字符串匹配的学生。Lateron我想使用contains来查找名字包含给定字符串的学生 我在控制器中创建了端点: @GetMapping("/firstname") public int findStudentsByfirstName(@RequestParam(value="string")String firstName){ if (firstName != null){ System.out.println(firstName);
@GetMapping("/firstname")
public int findStudentsByfirstName(@RequestParam(value="string")String firstName){
if (firstName != null){
System.out.println(firstName);
return studentRepository.countByfirstNameIgnoreCase(firstName);
} else return 0;
}
以及按方法名称创建的查询:
@Repository
public interface StudentRepository extends CrudRepository<Student, String> {
int countByfirstNameIgnoreCase(String firstName);
}
当我询问localhost:8080/学生时,我得到:
{"id":"c30e24a8-6b4a-4eec-a28c-afec74709141",
"lastName":"Schlund",
"firstName":"Rainer",
"eMail":"max@student.kit.edu",
"phoneNumber":"011981954856821",
"street":"Musterstraße 1",
"place":"123456 Musterstadt",
"role":"Student",
"immatriculationNumber":"196495619562",
"major":"Informatik",
"semester":27,
"spoId":"SPO08"}
有一个人的名字叫雷纳
但是当我尝试localhost:8080/student/firstname?string=Rainer时,结果是0。确保正确的方法是
int countByfirstNameIgnoreCase(String firstName);
而不是
int findByfirstNameIgnoreCase(String firstName);
?您尚未向我们展示执行查询的方法。可能就是这个bug。它应该由Hibernate从int countByfirstNameIgnoreCaseString firstName代码行自动创建;如上面第二个代码块所示。您是否尝试过不使用双引号?localhost:8080/student/firstname?string=rainer这是一个愚蠢的错误。谢谢,没问题。很高兴提供帮助。我相信从Spring Data 1.7.1开始,countBy是适用的。
int findByfirstNameIgnoreCase(String firstName);