Der Between
Das Schlüsselwort bindet natürlich zwei Parameter. Daher ist nach dem Binden der from-Klausel die Parameterliste erschöpft und wir wissen nicht, welche Parameter für das zweite Kriterium verwendet werden sollen.
Eine manuell definierte Abfrage sollte ausreichen:
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);
}