2016-05-16 4 views

उत्तर

15

नहीं है, उन दोनों के बीच कोई अंतर नहीं है, वे ठीक उसी क्वेरी को निष्पादित करेंगे, All हिस्सा स्प्रिंग डाटा द्वारा नजरअंदाज कर दिया जाता है जब पाने विधि नाम से क्वेरी। एकमात्र महत्वपूर्ण बिट By कीवर्ड है, इसके बाद कुछ भी फ़ील्ड नाम के रूप में माना जाता है (OrderBy जैसे अन्य कीवर्ड के अपवाद के साथ जो गोपनीय रूप से findAllByOrderByIdAsc जैसे कुछ अजीब दिखने वाले विधि नामों का कारण बन सकता है)।

इसका मतलब यह है कुछ इस तरह पूरी तरह से वैध है:

List<SomeEntity> findAnythingYouWantToPutHereBySomeCondition(); 

और के रूप में बिल्कुल वैसा ही SQL क्वेरी निष्पादित करेंगे:

List<SomeEntity> findBySomeCondition(); 

या

List<SomeEntity> findAllBySomeCondition(); 

अद्यतन: मैं इस व्यवहार के किसी भी आधिकारिक विवरण को कभी नहीं देखा दस्तावेज में लेकिन वसंत डेटा (Kay) के आगामी 2.0 रिहाई के बारे में recent blog post में iour यह समझाया गया था:

स्प्रिंग डाटा की विधि पार्स find तरह उपसर्ग कीवर्ड का उपयोग करने, exists, count, और delete और एक को समाप्त By कीवर्ड । find और By के बीच जो कुछ भी आपने डाला है, वह आपके विधि का नाम अधिक अभिव्यक्तिपूर्ण बनाता है और क्वेरी व्युत्पन्न को प्रभावित नहीं करता है।

+0

विवरण के लिए धन्यवाद – Nikita

0

findBy विधि का इस्तेमाल किया जाता है, तो हम नाम से पता लगाना चाहते हैं या कुछ अन्य मानदंड जैसे findByFirstName(String firstName);

ढूंढें सभी विधियां आमतौर पर विनिर्देश प्रदान करके पाती हैं

List<T> findAll(Specification<T> spec); 

कृपया नीचे दस्तावेज़ देख सकेंगे और अधिक स्पष्टता के लिए:

http://docs.spring.io/spring-data/jpa/docs/1.4.3.RELEASE/reference/html/jpa.repositories.html

+0

नहीं, यह विधि जिसे आपने लिखा है वह जेपीएएसपेसिफिकेशन एक्स्सेलर से है। मैं सिर्फ जेपीए रिपोजिटरी के बारे में बात कर रहा हूं। मैं विधि ढूंढ सकता हूं AllByFirstName (स्ट्रिंग फर्स्टनाम) और यह FindByFirstName के समान काम करेगा। इस सवाल में मैं उनके बीच अंतर को समझने की कोशिश कर रहा हूं। – Nikita

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