web-dev-qa-db-ja.com

例によるSpring Data ExampleMatchers

私はSpring Dataの Query by Example 機能の使用方法を理解しようとしています。 ExampleMatcher とそのさまざまなwith*メソッドの使用方法を理解するのに苦労しています。使用中のマッチャーの古典的な例には、次のようなスニペットが含まれます。

Person person = new Person();                          
person.setFirstname("Dave");                           

ExampleMatcher matcher = ExampleMatcher.matching()     
  .withIgnorePaths("lastname")                         
  .withIncludeNullValues()                             
  .withStringMatcherEnding();                          

Example<Person> example = Example.of(person, matcher);

どういうわけか、このDSLに頭を悩ませることはできません。ドキュメントからPersonの例を見てみましょう。 Personエンティティが次のようになっているとします。

// 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
}

次の基準を満たすExampleMatcherレコードを見つけられるPersonの作成方法の例を誰かに見せてもらえますか?

  • Sme」で始まる名;そして
  • 姓は10文字未満です。そして
  • 生年月日が1970-01-01より前である。そして
  • スコアは10〜20の範囲です

これらの基準のいずれかがExampleMatcherでは不可能な場合でも問題ありませんが、誰かが私にどの基準であるかを示したり、どのような方法で私を獲得できるかを説明したりできます私が探しているものに近い

7
smeeb

「Sme」で始まり、score = 50であるfirstNameのレコードを取得できます

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)
14
pvpkiran