2012-01-18 12 views
6

मैं कुछ वर्षों से हाइबरनेट का उपयोग कर रहा हूं लेकिन मुझे क्वेरी और मानदंड के उपयोग के बारे में निश्चित नहीं है।हाइबरनेट और मॉडलों के नाम बदलने से कैसे बचें

मुझे समझ में आया कि हाइबरनेट शक्तियों में से एक को फ़ील्ड नाम को एक ही स्थान पर नियंत्रित करना है। अगर मैं निम्नलिखित कोड है:

List cats = sess.createCriteria(Cat.class) 
.add(Restrictions.like("name", "Fritz%")) 
.add(Restrictions.between("weight", minWeight, maxWeight)) 
.list(); 

क्या होगा यदि मैं जावा वस्तु में कैट की "नाम" बदलते हैं?

रिफैक्टर प्रतिस्थापन (जैसे एलिप्स में) का उपयोग करते समय भी यह तत्व को उस चीज़ के रूप में नहीं पहचान पाएगा जिसे बदलने की जरूरत है!

यदि हां, तो आप जावा में फ़ील्ड नामों को कैसे बनाए रखते हैं?

+1

यूनिट परीक्षण। मैं किसी अन्य तंत्र के बारे में नहीं सोच सकता। – Adi

उत्तर

3

मेरा मानना ​​है कि टाइप सुरक्षित प्रश्न हाइबरनेट विशिष्ट एपीआई में समर्थित नहीं हैं। हालांकि जेपीए 2 के लिए इसका समर्थन है। इसे पढ़ें: Dynamic, typesafe queries in JPA 2.0

+0

तो इसका मतलब है कि मैं इसे अपने वर्तमान हाइबरनेट कार्यान्वयन के साथ उपयोग नहीं कर सकता? – Dejell

+0

@ ओदेली हां आपका विकल्प जेपीए 2 –

+0

पर जाना है जेपीए कार्यान्वयन के रूप में उपयोग नहीं किया जा सकता है? – Dejell

0

मुझे अतीत में एक ही समस्या है, और वास्तव में जावा में किसी फ़ील्ड के टाइप किए गए और रिफैक्टर प्रतिरोधी (परिवर्तन का नाम) संदर्भ रखने का कोई तरीका नहीं है, इसलिए न तो एक प्रश्न निर्माता संभव है जो इसकी अनुमति देता है, लेकिन मैंने एक क्वेरी बिल्डर के कार्यान्वयन को बनाने की कोशिश की है कि कुछ कामकाज का उपयोग करने से आपको टाइप सुरक्षित और रिफैक्टर प्रतिरोधी क्वेरी लिखने की अनुमति मिलती है, इसका नाम ऑब्जेक्टQuery है और आप here के बारे में कुछ जानकारी पा सकते हैं।

मुझे बताएं कि यह आपके उपयोग के मामले को हल करता है या नहीं!

स्पष्ट रूप से मानक के कुछ भी नहीं है, इसलिए यदि आप कुछ मानक की तलाश में हैं, तो बेहतर जेपीए टाइपएफ़ है लेकिन इसमें एक ही शक्ति नहीं है!

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