2014-09-16 114 views
8

Yay verileri, yöntem adını tanımlayarak SQL araması oluşturmanın bir yolunu sağlar.Birden çok tarih aramalı arama, Spring Data JPA CrudRepository ile nasıl birleştirilir?

aşağıdaki işleri ince:

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

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

Ama neden sonra çalışmaz aşağıdaki geliyor?

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

Soru: Mümkünse params yeniden

findByFromDateBetweenAndToDateBetween(Date departure, Date arrival); 

iki tarih aramaları bağlamak için, ben tarih tekrarlamak zorunda?

cevap

10

Between anahtar sözcüğü, doğal olarak iki parametreyi bağlar. Böylece, fıkra hükmünü bağladıktan sonra, parametre listesi tükenmiştir ve ikinci kriterler için hangi parametreleri kullanacağımızı bilmiyoruz.

hile yapmak gerekir

bir elle tanımlanan sorgu:

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); 
} 
İlgili konular