2017-02-06 1 views
0

Ich versuche, Studenten, die in einer Tabelle Vornamen eine bestimmte Zeichenkette entsprechen zu zählen. Später möchte ich "contains" verwenden, um Studenten zu finden, deren Namen eine bestimmte Zeichenfolge enthalten.Abfrageerstellung durch Methodennamen gibt immer Null zählt

habe ich den Endpunkt in der Steuerung:

@GetMapping("/firstname") 
    public int findStudentsByfirstName(@RequestParam(value="string")String firstName){ 
    if (firstName != null){ 
     System.out.println(firstName); 
     return studentRepository.countByfirstNameIgnoreCase(firstName); 
    } else return 0; 
} 

und die Erstellung der Abfrage durch Methodennamen:

@Repository 
public interface StudentRepository extends CrudRepository<Student, String> { 
    int countByfirstNameIgnoreCase(String firstName); 
} 

Das Feld vorName im Student Einheit existiert in seiner übergeordneten Klasse Person:

@Entity 
@Inheritance 
public abstract class Person { 

    @Id 
    @GeneratedValue(generator = "uuid") 
    @GenericGenerator(name = "uuid", strategy = "uuid2") 
    @Column(name = "uuid", unique = true) 
    @JsonProperty("id") 
    protected String id; 

    @Column 
    @NotNull 
    @JsonProperty("lastName") 
    protected String lastName; 

    @Column 
    @NotNull 
    @JsonProperty("firstName") 
    protected String firstName; 

Wenn ich um localhost: 8080/Student erhalte ich:

{"id":"c30e24a8-6b4a-4eec-a28c-afec74709141", 
"lastName":"Schlund", 
"firstName":"Rainer", 
"eMail":"[email protected]", 
"phoneNumber":"011981954856821", 
"street":"Musterstraße 1", 
"place":"123456 Musterstadt", 
"role":"Student", 
"immatriculationNumber":"196495619562", 
"major":"Informatik", 
"semester":27, 
"spoId":"SPO08"} 

So gibt es eine Person, deren Vorname "Rainer"

Aber wenn ich versuche, localhost: 8080/Student/Vorname string = "Rainer" ist das Ergebnis 0.

+0

Sie haben uns die Methode, die die Abfrage durchführt, nicht angezeigt. Wahrscheinlich ist der Fehler da. –

+0

Es sollte automatisch von Hibernate aus dieser Codezeile erstellt werden "int countByfirstNameIgnoreCase (String firstName);" im zweiten Codeblock oben gezeigt. –

+1

Haben Sie es ohne Anführungszeichen versucht? localhost: 8080/student/vorname? string = Rainer – RubioRic

Antwort

-1

Sure , dass die richtige Methode ist

int countByfirstNameIgnoreCase(String firstName); 

und nicht

int findByfirstNameIgnoreCase(String firstName); 

??

+0

Ich glaube ab Spring-Data 1.7.1 gilt 'countBy'. – Naros

Verwandte Themen