2010-02-24 8 views
6

क्या जैवसिस्ट के बजाय CGLib का उपयोग करने के लिए हाइबरनेट 3.3 या 3.5 को मजबूर करना अभी भी संभव है? मेरी गुण फ़ाइल में, मैंनेजैवसिस्ट के बजाय CGLib का उपयोग करने के लिए हाइबरनेट 3.3 या 3.5 को कैसे बल दें?

hibernate.bytecode.provider = cglib 

सेट किया लेकिन ऐसा लगता है कि ऐसा नहीं लगता है। कोई विचार?

+3

यह सवाल पूछता है .... क्यों? यह आंतरिक हाइबरनेट सामान है। – skaffman

उत्तर

7

ऐसा लगता है कि कुछ लोगों ने मेरा जवाब सही ढंग से नहीं पढ़ा है, इसलिए मैं फिर से लिखूंगा: आपका hibernate.properties सही दिखता है, संपत्ति अच्छी तरह परिभाषित है, इसे काम करना चाहिए। तो, सवाल के लिए खेद है लेकिन क्लासपाथ पर CGlib है?

अद्यतन: बस परीक्षण किया गया और यह मेरे लिए काम करता है। यहाँ उत्पादन मैं प्रारंभ समय में मिलता है:

 
15 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.3.0.SP1 
18 [main] INFO org.hibernate.cfg.Environment - loaded properties from resource hibernate.properties: {hibernate.bytecode.use_reflection_optimizer=false, hibernate.bytecode.provider=cglib} 
20 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name : cglib 

पुनश्च: ध्यान दें कि हाल ही में CGLIB support has been deprecated (इसका मतलब यह नहीं है कि आप CGLIB उपयोग करने के लिए सक्षम नहीं होगा, लेकिन एकीकरण इसे अब और नहीं रखा)।

+0

मुझे नहीं पता कि यह आपके पर्यावरण में कैसे काम करता है (हो सकता है कि आप जेबॉस के साथ पैक किए गए हाइबरनेट चला रहे हों?), लेकिन बाइटकोड को कैप्चर करने के लिए कक्षा निर्माण (बेवकूफ!) पर क्लासपाथ में हाइबरनेट को सिस्टम प्रॉपर्टी या 'hibernate.properties' की आवश्यकता होती है) प्रदाता सेटिंग। इसलिए कक्षा में 'cglib' होने से इस मुद्दे की जड़ नहीं है। 3.3.1 और 3.3.2 दोनों "बॉक्स के बाहर" काम नहीं करते हैं। –

+0

@dma_k फिर से प्रश्न पढ़ें, ओपी ** ** में क्लासपाथ पर 'hibernate.properties' फ़ाइल (* "मेरी गुण फ़ाइल में, मैं सेट" *) है, इसलिए यह हिस्सा मेरे उत्तर (* "और आपकी संपत्ति अच्छी तरह परिभाषित है" *)। हो सकता है ** आप ** ओपी और मैंने क्या कहा, गलत समझा, इस मामले में, मैं आपको अपने वोट पर पुनर्विचार करने के लिए कहता हूं। मैंने कभी नहीं कहा कि संपत्ति फ़ाइल की आवश्यकता नहीं थी। –

+0

@dma_k लॉग ट्रेस यह भी दिखाता है कि मेरे पास 'hibernate.properties' है। मैंने जो कहा वह पूरी तरह से गलत है। –

1

हाँ, यह भी कुछ स्रोत फ़ोल्डर में

hibernate.properties 

रख दिया और निर्भरता में hibermate-cglib-repack के लिए याद रखें:

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-cglib-repack</artifactId> 
    <version>2.1_3</version> 
</dependency> 
+0

हाइबरनेट 3.3.2 से शुरू करना cglib के पुनर्स्थापित संस्करण की आवश्यकता नहीं है। और, कम से कम 3.2.x के लिए, या तो '-Dhibernate.bytecode.provider = cglib' सिस्टम प्रॉपर्टी को स्पीओफ़ी करने की आवश्यकता पर या एक ही संपत्ति के साथ एक वर्गपाथ-व्यापी 'hibernate.properties' बनाने के लिए। –

1

याद रखें कि CGLIB पुस्तकालय के बारे में 4 साल के लिए विकसित नहीं है । आपको अपने कोड को जावस्सिस्ट के साथ काम करने के लिए सब कुछ करना चाहिए, जो अभी भी सक्रिय रूप से बनाए रखा गया है।

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

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