2014-09-10 7 views
10

के साथ स्प्रिंग डेटा क्वेरी विधि क्या क्वेरी विधि @ पैराम वैकल्पिक होने की अनुमति देना संभव है, खासकर स्प्रिंग डेटा आरईएसटी के मामले में?वैकल्पिक @ पैराम

उदाहरण के लिए, मैं एक ही संसाधन पथ पर एक समान खोज को बांधना चाहता हूं।

@RestResource(path = "driver", rel = "byDriver") 
List<Bar> findByDriverId(@Param("id") String id, Pageable pageable); 

@RestResource(path = "driverAndSpan", rel = "byDriverAndSpan") 
List<Bar> findByDriverIdAndStartTimeGreaterThanEqualAndEndTimeLessThanEqual(@Param("id") String id, @Param("start") Date start, 
     @Param("end") Date end, Pageable pageable); 

कौन सा मुझे देता है::

byDriver: { 
    href: "http://localhost:8080/foo/search/driver{?id,page,size,sort}", 
}, 
byDriverAndSpan: { 
    href: "http://localhost:8080/foo/search/driverAndSpan{?id,start,end,page,size,sort}", 
} 

क्या मैं चाहते निम्न पथ, जहां start की तरह कुछ देखने के लिए सक्षम होने के लिए अब ऐसा करने के लिए, मैं निम्नलिखित की तरह कुछ की आवश्यकता होगी और end मेरे रिपोजिटरी में कई विधियों को परिभाषित करने के बजाय वैकल्पिक पैरामीटर हैं।

byDriverAndSpan: { 
    href: "http://localhost:8080/foo/search/driverAndSpan{?id,*start,*end,page,size,sort}", 
} 

जो संभवतः दिखाई देगा:

@RestResource(path = "driverAndSpan", rel = "byDriverAndSpan") 
List<Bar> findByDriverIdAndStartTimeGreaterThanEqualAndEndTimeLessThanEqual(@Param("id") String id, @Param(value = "start", optional = true) Date start, 
     @Param(value = "end", optional = true) Date end, Pageable pageable); 
+0

पुरानी पोस्ट को खोदना ... मुझे आश्चर्य है कि किसी ने भी [Querydsl] (http://www.querydsl.com/) का उल्लेख नहीं किया है, जो वास्तव में आप उपयोग कर सकते थे। –

उत्तर

0

नहीं, यह अभी समर्थित नहीं है। अगर यह अस्पष्टता का खतरा होगा। ऐसा परिदृश्य हो सकता है जहां आने वाला यूआरएल 1 @RestResource से अधिक मिलान कर सके।

देखने के एक जावा बिंदु से व्याख्या करने के लिए देता है कहते हैं कि हम दो तरीकों निर्धारित कर सकते हैं:

getPerson(String firstName, int age); 

getPerson(String firstName, {Optional} int age, int phoneNumber); 

वहाँ मुद्दों होगा, जब कोई व्यक्ति दूसरी विधि आह्वान करने के लिए लक्ष्य है उम्र की आपूर्ति नहीं लेकिन करने के लिए मैप किए जा रहे फोन नंबर के साथ पहली विधि उम्र के रूप में पढ़ा जा रहा है।

+0

अस्पष्टता का जोखिम कैसा है? पैरामीटर्स में (अद्वितीय) नाम होते हैं। – Nefreo

+0

क्या आप अनुरोध में पैरामीटर नाम की आपूर्ति कर रहे हैं? – UserF40

+2

ओपी का कहना है कि वह 'http: // localhost: 8080/foo/search/driverAndSpan {? Id, * start, * end, page, size, sort} 'के साथ कुछ पसंद करेंगे। इस मामले में पैरामीटर नाम से आपूर्ति की जाती हैं इसलिए अस्पष्टता के लिए जगह नहीं होनी चाहिए। – Nefreo

संबंधित मुद्दे