2014-09-16 4 views
8

spring-data bietet eine Möglichkeit, die SQL-Suche zu generieren, indem der Methodenname definiert wird.Wie kann man mehrere Datums-Suchen mit dem CrudRepository von Spring Data JPA kombinieren?

Folgende Arbeiten fein:

@Entity 
public class Book { 
    Date from, to; 
} 

//CrudRepository<Book> 
findByFromDateBetween(Date departure, Date arrival); 

Aber warum dann funktioniert das folgende nicht?

findByFromDateBetweenAndToDateBetween(Date departure, Date arrival); 

Um zwei Datum Suche zu verbinden, ich habe das Datum wiederholen:

findByFromDateBetweenAndToDateBetween(Date departure, Date arrival, Date departure, Date arrival); 

Frage: ist es möglich, die params wieder zu verwenden?

Antwort

10

Das Schlüsselwort Between bindet natürlich zwei Parameter. Nach dem Binden der from-Klausel ist also die Parameterliste erschöpft und wir wissen nicht, welche Parameter für das zweite Kriterium zu verwenden sind.

Eine manuell definierten Abfrage sollte es tun:

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); 
} 
Verwandte Themen