2014-08-29 6 views
14

हमारे कोड में हमारे पास कई मॉडल स्प्रिंग जेपीए रिपोजिटरीज हैं, जो हमारे प्रत्येक मॉडल वर्गों में से एक हैं। वे के रूप में परिभाषित कर रहे हैं (जहां <Name> हमारे औसत वर्ग का नाम है):इंटेलिजे "ऑटोवायर नहीं कर सका।" निरीक्षण, "[...] वसंत जेपीए भंडारों के लिए एक से अधिक बीन"

@Repository 
public interface <Name>Repository implements JpaRepository<Name, Long> { 
    // … 
} 

हम javax से @Inject एनोटेशन का उपयोग कर हमारे सेम में उन्हें इंजेक्षन:

@Inject 
public void set<Name>Repository(<Name>Repository <name>Repo) { 
    this.<name>Repo = <name>Repo; 
} 

private <Name>Repository <name>Repo; 

मुद्दा यह है कि इंटेलीजे को रेखांकित करता है

autowire नहीं कर सका: पाठ के साथ एक त्रुटि के रूप में set<Name>Repository समारोह में <name>Repo। 'रिपोजिटरी' प्रकार के एक से अधिक बीन हैं। बीन्स: रेपो, रेपो।

यह निरीक्षण के साथ केवल एक समस्या है। हमारे ऐप का संकलन और चलाना ठीक काम करता है, लेकिन आईजे उपयोग में निरीक्षण करने के प्रयास में यह एक बड़ी समस्या है। किसी के पास इंटेलिजे को व्यवहार करने के तरीके के बारे में सुझाव हैं?

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

+0

क्या इंटेलिजे आपको बताता है कि कौन से बीन्स इंजेक्शन से मेल खाते हैं? – geoand

+1

इसके अलावा एक अलग नोट पर, आपको '@ रिपोजिटरी 'एनोटेशन की आवश्यकता नहीं है। वसंत डेटा जेपीए स्वचालित रूप से बीन बना देगा यदि यह ठीक से कॉन्फ़िगर किया गया है – geoand

+0

हां, @geoand, मिलान करने वाले बीन्स ' रेपो 'और' रेपो' हैं। सबसे उपयोगी नहीं है। केवल एक चीज जिसे मैं सोच सकता था वह था कि आईजे ने '@ रिपोजिटरी' एनोटेशन और वसंत कॉन्फ़िगरेशन दोनों को उठाया? –

उत्तर

12

मुझे भी एक ही समस्या है। मैंने बस अपने स्प्रिंग डेटा जेपीए रिपोजिटरीज पर @ रिपोजिटरी एनोटेशन पर टिप्पणी की और सब कुछ ठीक काम कर रहा है और इंटेलिजे आईडीईए भी खुश है!

+1

यह पता चला कि यह क्या हो रहा था। हमने जावा-आधारित कॉन्फ़िगरेशन के साथ '@ रिपोजिटरी 'एनोटेशन का उपयोग किया, जिसने मैन्युअल रूप से हमारे सभी भंडारों को भी शुरू किया, इसलिए आईजे ने सोचा कि वहां दो समान बीन्स थे। हालांकि, क्योंकि हमने स्प्रिंग को '@ रिपोजिटरी 'एनोटेशन की तलाश में कॉन्फ़िगर नहीं किया है, लेकिन ऐप चलाने पर केवल मैन्युअल कॉन्फ़िगरेशन का उपयोग किया गया था, जिससे समस्याएं नहीं आ रही थीं। '@ रिपोजिटरी 'एनोटेशन को हटाने से चाल चल रही थी, और यह सही है क्योंकि हम इसका उपयोग नहीं कर रहे थे। –

+0

मेरे पास एक मुद्दा यह है कि यदि मैं स्प्रिंग बूट का उपयोग करता हूं, तो वर्तमान में IntelliJ v 15 गलत तरीके से शिकायत करता है कि यह स्प्रिंग डेटा रिपॉजिटरीज़ (जैसे क्रूड रिपोजिटरी) में से किसी भी को स्वचालित नहीं कर सकता है, इसलिए @Repository इसे जोड़ता है। हालांकि, यदि आप स्प्रिंग बूट का उपयोग नहीं करते हैं तो मेरे पास एक त्रुटि होती है (मेरे पास एक मानक वसंत ऐप और वसंत बूट का उपयोग करके साझा दाओ लाइब्रेरी वाला एक प्रोजेक्ट है! - कोई फिक्स करता है कि कोई दूसरा तोड़ता है)। हालांकि कोई रनटाइम त्रुटि नहीं होती है और सभी काम जैसा सोचा था – ismoore999

2

बाहर कर देता है मैं 2 संदर्भों जो मेरे वसंत applicationContext.xml में दो बार एक ही कक्षाएं उठा थे:

<mongo:repositories base-package="com.example.persistence.repositories.*"/> 
... 
<context:component-scan base-package="com.example.persistence.repositories.*"/> 

इन लाइनों में से किसी समस्या का समाधान हो निकाला जा रहा है।

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