spring-dataは、メソッド名を定義することによってSQL検索を生成する方法を提供します。
以下は正常に機能します。
@Entity
public class Book {
Date from, to;
}
//CrudRepository<Book>
findByFromDateBetween(Date departure, Date arrival);
しかし、なぜ次のことが機能しないのですか?
findByFromDateBetweenAndToDateBetween(Date departure, Date arrival);
2つの日付検索を接続するには、日付を繰り返す必要があります。
findByFromDateBetweenAndToDateBetween(Date departure, Date arrival, Date departure, Date arrival);
質問:パラメータを再利用することは可能ですか?
Between
キーワードは、当然2つのパラメーターをバインドします。したがって、from句をバインドした後、パラメータリストが使い果たされ、2番目の基準に使用するパラメータがわかりません。
手動で定義されたクエリでうまくいくはずです。
interface BookRepository extends Repository<Book, Integer> {
@Query("select b from Book b " +
"where b.from between ?1 and ?2 and b.to between ?1 and ?2")
List<Book> findByDatesBetween(Date departure, Date arrival);
}