Spring Data JPA で QueryDSL を使い始めたばかりです。すべての述語を格納するクラスがあるため、サービス メソッドでは、ブール式を渡すことで、リポジトリで findAll() または findOne() を呼び出すことができます。次に例を示します。
述語クラス メソッド:
public static BooleanExpression byCode(String code) {
return QHeading.heading.code.eq(code);
}
サービス クラス メソッド:
public Iterable<Heading> getByCode(final String code) {
return headingRepository.findAll(byCode(code));
}
これは問題なく動作しますが、ある見出しが別の見出しの子である場合、述語クラスから同じメソッドを再利用し、一致する子ではなく、親見出しを返す別のメソッドでラップするだけにしたいと考えています。ブール式。ただし、これを行う正しい方法を理解するのに少し苦労しています。
したがって、次のようになります。
述語メソッド:
public static BooleanExpression byCode(String code) {
return QHeading.heading.code.eq(code);
}
public static BooleanExpression byChildCode(String code) {
QHeading.heading.childHeadings.eq(byCode(code));
}
サービス方法:
public Iterable<Heading> getByChildCode(final String code) {
return headingRepository.findAll(byChildCode(code));
}
明らかに、このeq()
方法は機能しませんが、これを達成する方法はありますか、またはこれについて完全に行うべき別の方法はありますか?