डेटा प्राप्त करने के लिए मुझे प्राप्त हो रहा है मुझे यह सुनिश्चित करने की आवश्यकता है कि लंबाई डेटाबेस कॉलम की लंबाई से अधिक नहीं जा रही है। अब सभी लंबाई की जानकारी हाइबरनेट मैपिंग फाइलों में संग्रहीत है, क्या इस जानकारी को प्रोग्रामेटिक रूप से एक्सेस करने के लिए वैसे भी है?हाइबरनेट मैपिंग से कॉलम की लंबाई प्राप्त करना?
उत्तर
आप इसे प्राप्त कर सकते हैं लेकिन यह आसान नहीं है। आप स्टार्टअप पर नीचे कुछ ऐसा करना चाहते हैं और मूल्यों का एक स्थिर कैश स्टोर कर सकते हैं। (विरासत, आदि) से निपटने के लिए बहुत से विशेष मामले हैं, लेकिन इसे सरल सिंगल-कॉलम मैपिंग के लिए काम करना चाहिए। मैंने कुछ उदाहरण और शून्य जांच छोड़ दी हो सकती है।
for (Iterator iter=configuration.getClassMappings(); iter.hasNext();) {
PersistentClass persistentClass = (PersistentClass)iter.next();
for (Iterator iter2=persistentClass.getPropertyIterator(); iter2.hasNext();) {
Property property = (Property)iter2.next();
String class = persistentClass.getClassName();
String attribute = property.getName();
int length = ((Column)property.getColumnIterator().next()).getLength();
}
}
मुझे यह कोशिश करनी होगी, धन्यवाद ब्रायन। –
ब्रायन के उत्तर के आधार पर, मैं यही कर रहा हूं।
private static final Configuration configuration = new Configuration().configure();
public static int getColumnLength(String className, String propertyName) {
PersistentClass persistentClass = configuration.getClassMapping(className);
Property property = persistentClass.getProperty(propertyName);
int length = ((Column) property.getColumnIterator().next()).getLength();
return length;
}
ऐसा लगता है कि यह अच्छी तरह से काम कर रहा है। उम्मीद है कि यह किसी भी व्यक्ति के लिए सहायक होगा जो इस प्रश्न पर ठोकर खाता है।
हाइबरनेट 5 के साथ इस तरह पर्सिस्टेंट क्लास प्राप्त करें (कॉन्फ़िगरेशन के माध्यम से): 'मानक सेवा रजिस्ट्री मानक रजिस्ट्री = नया मानक सेवा रजिस्ट्रीबिल्डर()। कॉन्फ़िगर करें (" hibernate.cfg.xml ")। Build(); मेटाडाटा मेटाडेटा = नया मेटाडेटा स्रोत (मानक रजिस्ट्री) .getMetadatabuilder()। Build(); सूची
कभी-कभी कॉन्फ़िगरेशन ऑब्जेक्ट प्राप्त करने में समस्या हो सकती है (यदि आप कुछ एप्लिकेशन ढांचे का उपयोग कर रहे हैं और आप कॉन्फ़िगरेशन का उपयोग करके स्वयं सत्र सत्र बना रहे हैं)।
यदि आप उदाहरण के लिए वसंत का उपयोग कर रहे हैं, तो आप कॉन्फ़िगरेशन ऑब्जेक्ट प्राप्त करने के लिए LocalSessionFactoryBean (अपने एप्लिकेशन कॉन्टेक्स्ट से) का उपयोग कर सकते हैं। तब स्तंभ लंबाई के प्राप्त करने के केक का सिर्फ टुकड़ा है;)
factoryBean.getConfiguration().getClassMapping(String entityName) .getTable().getColumn(Column col).getLength()
हालांकि, जब मैं LocalSessionFactoryBean
तक पहुँचने का प्रयास, मैं एक वर्ग डाली अपवाद ले
LocalSessionFactoryBean factoryBean = (LocalSessionFactoryBean) WebHelper.instance().getBean("sessionFactory");
अपवाद:
org.hibernate.impl.SessionFactoryImpl cannot be cast to org.springframework.orm.hibernate3.LocalSessionFactoryBean
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean>
यह दुर्भाग्यपूर्ण लगता है ....
संपादित करें: उत्तर मिला। आप सेम नाम स्ट्रिंग के सामने एक ampersand उपयोग करने की आवश्यकता
LocalSessionFactoryBean factoryBean = (LocalSessionFactoryBean) WebHelper.instance().getBean("&sessionFactory");
मेरे पसंदीदा विकास पैटर्न एक निरंतर पर स्तंभ लंबाई, जो आसानी से संदर्भित किया जा सकता आधार पर है:
class MyEntity {
public static final int FIELD_LENGTH = 500;
@Column(length = FIELD_LENGTH)
String myField;
...
}
- 1. कॉलम मान की लंबाई प्राप्त करें, कॉलम की अधिकतम लंबाई
- 2. हाइबरनेट मैपिंग: एकाधिक कॉलम में एक कॉलम
- 3. लिंक से एसक्यूएल - अंतर्निहित कॉलम की लंबाई
- 4. हाइबरनेट @ अनुमानित मैपिंग
- 5. हाइबरनेट: एक से कई रिश्ते में कॉलम निर्दिष्ट करना
- 6. हाइबरनेट एनम मैपिंग
- 7. हाइबरनेट मैपिंग फ़ाइलों में निरंतर
- 8. हाइबरनेट एक से शून्य या एक मैपिंग
- 9. हाइबरनेट में वैकल्पिक एक-से-एक मैपिंग
- 10. स्कीमा निर्माता में कॉलम की लंबाई बदलें?
- 11. हाइबरनेट: फ़ाइलों या एनोटेशन मैपिंग?
- 12. मैपिंग कैसंड्रा सुपर कॉलम
- 13. किसी इकाई से एकल कॉलम प्राप्त करना
- 14. हाइबरनेट/NHibernate मैपिंग फ़ाइल संपादक
- 15. हाइबरनेट, डुप्लिकेट मान प्राप्त करना
- 16. हाइबरनेट एनम मैपिंग एनोटेशन का उपयोग करके
- 17. हाइबरनेट - कॉलम
- 18. वसंत + हाइबरनेट मैपिंग क्लास xml
- 19. हाइबरनेट एक्सएमएल मैपिंग: आलसी झूठी या प्राप्त करें चुनें?
- 20. सामग्री-लंबाई के बिना http अनुरोध की प्रतिक्रिया प्राप्त करना?
- 21. जेपीए/हाइबरनेट मैपिंग डायनामिक कॉलम ऑब्जेक्ट्स की सूची के रूप में
- 22. हाइबरनेट मैपिंग फ़ाइल और एनोटेशन
- 23. जेपीए/हाइबरनेट मैपिंग टेबल एक से कई रिश्तों के लिए
- 24. हाइबरनेट
- 25. हाइबरनेट: एचक्यूएल में मैपिंग के ईगर को ओवरराइड करना?
- 26. एनएसएआरएआरई लंबाई/गिनती प्राप्त करना - उद्देश्य सी
- 27. ऑडियो फ़ाइल की लंबाई प्राप्त करें php
- 28. हाइबरनेट: मैपिंग से एनोटेशन तक माइग्रेट करना - क्या एचबीएम और एनोटेशन मिश्रण करना संभव है?
- 29. पायथन/numpy: 2 डी सरणी कॉलम लंबाई कैसे प्राप्त करें?
- 30. हाइबरनेट की मानदंड और अनुमान का उपयोग हाइबरनेट की मानदंड का उपयोग करना अधिक अलग-अलग कॉलम
इस समस्या के जेपीए समाधान के लिए http://stackoverflow.com/questions/1816780/ भी देखें। –