J'essaie de comprendre comment utiliser les capacités de Spring Data Query by Example , et j'ai du mal à comprendre comment utiliser ExampleMatcher
et ses divers with*
méthodes. Des exemples classiques du matcher utilisé incluent des extraits comme celui-ci:
Person person = new Person();
person.setFirstname("Dave");
ExampleMatcher matcher = ExampleMatcher.matching()
.withIgnorePaths("lastname")
.withIncludeNullValues()
.withStringMatcherEnding();
Example<Person> example = Example.of(person, matcher);
Pour une raison quelconque, je ne peux pas envelopper mon cerveau autour de cette DSL. Prenons l'exemple Person
de la documentation. Disons qu'une entité Person
ressemble à ceci:
// Pseudo code; omitting JPA annotations for this example
public class Person {
private String firstName;
private String lastName;
private Date dob;
private Long score;
// Getters, setters & constructor omitted
}
Quelqu'un peut-il me montrer comment construire un ExampleMatcher
qui me permettrait de trouver des enregistrements Person
répondant aux critères suivants:
Si l'un de ces critères n'est pas possible avec ExampleMatcher
, c'est bien, mais quelqu'un peut-il me montrer lesquels sont ou expliquer quelles méthodes pourraient me permettre fermer vers ce que je recherche?
Vous pouvez obtenir des enregistrements avec firstName commençant par "Sme" et score = 50
Person person = new Person();
person.setFirstName("Sme");
person.setScore(50L);
ExampleMatcher matcher = ExampleMatcher.matching()
.withMatcher("firstName", startsWith())
.withMatcher("score", exact());
Example<History> example = Example.of(person, matcher);
personRepository.findAll(example)