El Between
La palabra clave vincula naturalmente dos parámetros. Por lo tanto, después de vincular la cláusula from, la lista de parámetros se agota y no sabemos qué parámetros usar para el segundo criterio.
Una consulta definida manualmente debería ser suficiente:
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);
}