2014-09-16 7 views
8

वसंत-डेटा विधि नाम को परिभाषित करके SQL खोज उत्पन्न करने का एक तरीका प्रदान करता है।स्प्रिंग डेटा जेपीए की क्रूड रिपोजिटरी के साथ कई तारीखों के बीच खोजों को कैसे जोड़ें?

निम्नलिखित काम करता है ठीक:

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

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

लेकिन क्यों तो काम नहीं निम्नलिखित है?

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

प्रश्न:: पैरामीटर पुन: उपयोग करने के लिए यह संभव है

findByFromDateBetweenAndToDateBetween(Date departure, Date arrival); 

दो तारीख खोजों का संपर्क करने के लिए, मैं तारीख को दोहराने के लिए है?

उत्तर

10

Between कीवर्ड स्वाभाविक रूप से दो मानकों को बांधता है। इस प्रकार खंड से बाध्य करने के बाद, पैरामीटर सूची समाप्त हो गई है और हम नहीं जानते कि कौन से पैरामीटर दूसरे मानदंडों के लिए उपयोग करते हैं।

एक मैन्युअल रूप से परिभाषित क्वेरी चाल करना चाहिए:

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); 
} 
संबंधित मुद्दे