2012-02-21 11 views
9

मैं नीचे की तरह मेरी कस्टम क्वेरी विधियों के लिए स्प्रिंग डेटा जेपीए के साथ क्वेरी कैश का उपयोग करने में सक्षम हूं।डिफॉल्ट स्प्रिंग डेटा जेपीए विधियों पर QueryHints को कैसे जोड़ें?

public interface CountryRepository extends JpaRepository<Country, String> { 
@QueryHints({ @QueryHint(name = "org.hibernate.cacheable", value ="true") }) 
Country findByCountryName(String countryName); 
@QueryHints({ @QueryHint(name = "org.hibernate.cacheable", value ="true") }) 
Country findByCountryCode(String countryCode); } 

हालांकि, कैसे मौजूदा findAll तरह माता-पिता के तरीकों() पर @QueryHints जोड़ने के लिए?

धन्यवाद।

+0

@oliver -gierke, क्या आपको कोई विचार है कि इसे कैसे प्राप्त किया जाए? –

+0

मुझे एक ही समस्या है। मैंने उन्हें ओवरराइड करने और @QueryHint एनोटेशन जोड़ने की कोशिश की, लेकिन उन्हें अनदेखा कर दिया गया। –

+0

@ user791694, नीचे sgp15 का उत्तर देखें http://stackoverflow.com/a/10876707/418439 –

उत्तर

3

findAll(), findOne() आदि क्वेरी नहीं हैं। इन तरीकों में इकाई पर किसी भी कैशिंग विनिर्देश प्रभावी होते हैं।

उदाहरण के लिए,

@Cacheable 
@Entity 
public class User { 

} 
+0

यह भी देखें [@Cacheable सेटिंग] (http://stackoverflow.com/a/3664293/418439) –

+0

मेरे पास ये है सेट करें और ढूंढने के लिए यह सब डेटाबेस पर जाता है। क्या मुझे कुछ भी चालू करने की ज़रूरत है? –

+0

@ कैशेबल को खोजने पर कोई प्रभाव नहीं पड़ता है All()। मेरी समझ यह है कि findOne() "लेवल 2 कैश" से जुड़ा हुआ है लेकिन "क्वेरी कैश" से जुड़ा हुआ है। FindAll() को कैश करने के लिए, मैंने विधि को ओवरराइड कर दिया है और @ queryhints जोड़ दिया है। –

1

मूल रूप से, वहाँ डिफ़ॉल्ट CRUD तरीकों में क्वेरी संकेत एनोटेशन के लिए कोई समर्थन था, लेकिन जाहिरा तौर पर यह हैस संस्करण 1.6M1 के लिए निर्धारित किया गया:

https://jira.spring.io/browse/DATAJPA-173

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