2010-02-02 11 views
15

मेरे पास यह हाइबरनेट कोड है:इंटेलिजे में हाइबरनेट क्वेरी को संकलित त्रुटि क्यों होती है?

Query q = session.createQuery("from MyTable where status = :status"); 

यह संकलित करता है और ठीक काम करता है ..

लेकिन इंटेलिजे में मुझे यह त्रुटि मिली है:

अभिव्यक्ति को हल नहीं कर सकता, नहीं कर सकता प्रतीक 'MyTable'

हल करें IntelliJ शिकायत क्यों है ??

उत्तर

15

IntelliJ स्ट्रिंग के अंदर आपके एचक्यूएल क्वेरी को सत्यापित करने का प्रयास कर रहा है। ऐसा करने के लिए इसे अपने हाइबरनेट कॉन्फ़िगरेशन के बारे में जानने के लिए कॉन्फ़िगर करने की आवश्यकता है ताकि यह सुनिश्चित किया जा सके कि मैपटेबल के लिए मैपिंग मौजूद है (यह रनटाइम पर है, जैसा कि आप जानते हैं - जैसा कि यह निष्पादित होता है!)।

अपनी परियोजना के लिए intelliJ में हाइबरनेट कॉन्फ़िगरेशन अनुभाग देखें।

यदि यह मदद से अधिक बाधा है तो शायद इसे बंद करने का एक तरीका है।

+3

धन्यवाद। यह वास्तव में जावा ईई मुद्दों \ दृढ़ता QL समस्याओं के तहत एक सेटिंग थी। इसे बंद कर दिया और मैं अच्छा था। –

+3

@Marcus thx 4 यह सुराग! आईडीईए 13 में इस सेटिंग को स्थानांतरित/नामित किया गया है, लेकिन सेटिंग में खोज बॉक्स में 'क्वेरी' टाइप करना -> निरीक्षण संवाद जेपीए मुद्दों के तहत इसका खुलासा करता है ... – Superole

+0

यह काम करता है लेकिन मैंने @tumanov – powder366

3

मैक ओएस एक्स के लिए IntelliJ विचार 13 में मैं "जेपीए मुद्दे" के तहत "क्वेरी लैंग्वेज चेकों" के रूप में इस विकल्प

12

करें कि आप अपने पहलुओं ठीक से कॉन्फ़िगर किया है कि सुनिश्चित पा सके। मुझे अपने स्प्रिंग डेटा जेपीए @Query एनोटेशन में त्रुटियां मिल रही थीं "प्रतीक को हल नहीं कर सकता" (केवल इंटेलिजे आईडीईए के भीतर; कोड ने इसे चलाने पर ठीक काम किया) और मुझे परियोजना संरचना, Facets में जाने और जेपीए जोड़ने की आवश्यकता थी पहलू। (मुझे लगता है कि कोई जेपीए के बिना हाइबरनेट का उपयोग कर रहा है, तो कोई सिर्फ जेपीए पहलू की बजाय हाइबरनेट पहलू जोड़ देगा।)

17

"परियोजना संरचना" के तहत एक "हाइबरनेट" फैकेट जोड़ें, उसके बाद उस Facet के लिए "हाइबरनेट "हाइबरनेट कॉन्फ़िगरेशन" के लिए फ़ाइल .cfg.xml "। यह आईडीईए को आपकी कक्षा के बारे में टेबल मैपिंग के बारे में बताएगा और एचक्यूएल प्रश्नों में उन वर्गों को पहचानने में मदद करेगा।

यदि आप "hibernate.cfg.xml" का उपयोग नहीं करते हैं, उदाहरण के लिए वसंत के लिए आप अपने डेटासोर्स को आरंभ करने के लिए "applicationContext.xml" का उपयोग कर सकते हैं, जिसमें हाइबरनेट फैकेट घोषित हो सकता है।

+3

के अनुसार तय किया है कि यह नोट करें कि यह यदि आप एक्सएमएल मैपिंग का उपयोग करते हैं तो निरीक्षण को बंद करने पर उत्तर को प्राथमिकता दी जाती है। यह बनाने के लिए एक आसान सेटिंग है और यह बहुत मदद करता है। –

+0

धन्यवाद तुम्मानोव। काम के आपके उत्तर के लिए एक और शर्त थी: प्लगइन "हाइबरनेट" को आपके प्रोजेक्ट के लिए सक्रिय करने की आवश्यकता है। –

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