2012-05-11 7 views
13

हम 4.1.2 को हाइबरनेट 3.6.7 से उन्नयन और चींटी उपकरण का उपयोग कर 3.5.0हाइबरनेट उपकरण: पार्स करने में त्रुटि JNDI नाम

हम एक डीबी निर्माण स्क्रिप्ट उत्पन्न करने के लिए 3.2.0 हाइबरनेट की कोशिश कर रहे:

 <hibernatetool destdir="${target}"> 
     <jpaconfiguration persistenceunit="stdcmpOrderPersistenceUnit" propertyfile="@{propertyfile}"/> 
     <classpath refid="@{classpathid}"/> 
     <!-- the file name is relative to $destdir --> 
     <hbm2ddl outputfilename="@{output}" format="true" export="false" drop="false"/> 
    </hibernatetool> 

हमारा इस तरह हठ इकाई देखो:

<persistence-unit name="stdcmpOrderPersistenceUnit" transaction-type="JTA"> 

    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <jta-data-source>jdbc/lakshmi_stdcmp</jta-data-source> 
    <mapping-file>META-INF/stdcmpOrderNamedQueries.xml</mapping-file> 

    <class>ch.ethz.id.wai.lakshmi.stdcmp.persistency.PersistentOrder</class> 

    <exclude-unlisted-classes>true</exclude-unlisted-classes> 

    <properties> 
     <property name="hibernate.show_sql" value="false"/> 
     <property name="hibernate.format_sql" value="false"/> 
    </properties> 

</persistence-unit> 

उन्नयन हम निम्न त्रुटि प्राप्त करने के बाद:

[hibernatetool] org.hibernate.service.jndi.JndiException: Error parsing JNDI name [jdbc/lakshmi_stdcmp] 
[hibernatetool] javax.naming.NoInitialContextException: Need to specify class name in environment or system property, or as an applet parameter, or in an application resource file: java.naming.factory.initial 

हाइबरनेट जेएनडीआई नाम को हल करने का प्रयास क्यों करता है क्योंकि PersistenceUnit पर सभी जानकारी उपलब्ध है? हमें पुराने संस्करण के साथ कोई समस्या नहीं थी।

और किसी भी मामले में हम नामकरण कारखाना कैसे निर्दिष्ट कर सकते हैं? (और कौन सा?)

उत्तर

1

समस्या आपके हाइबरनेट उपकरण से है, आपने दृढ़ता इकाई का उपयोग करने के लिए हाइबरनेट टूल कॉन्फ़िगर किया है जिसमें जेएनटीआई के माध्यम से एक जेटीए डेटा-स्रोत कॉन्फ़िगर किया गया है। जेएनडीआई से बात करने के लिए चींटी कार्य के लिए इसे कारखाने के यूआरएल और प्रदाता नामकरण की आवश्यकता है। अपने एप्लिकेशन सर्वर के नामकरण फैक्ट्री क्लास का उपयोग करें जहां डेटासोर्स कॉन्फ़िगर किया गया है।

उम्मीद है कि यह मदद करता है।

48

मुझे इसी तरह की समस्या थी, विशेष रूप से "जेएनडीआई नाम पार्सिंग त्रुटि", और इसे सत्र-फैक्ट्री टैग से खाली नाम विशेषता को आसानी से हटाकर आसानी से तय किया गया था।

मेरे hibernate.cfg.xml

<session-factory name=""> 

यह स्वतः सृजित किया गया था, तो मैं बस name attrib हटा दिया।

इस सुधार में यहाँ पाया गया था: https://forum.hibernate.org/viewtopic.php?f=1&t=1014760

गुड लक।

+1

स्टैक ओवरफ़्लो में आपका स्वागत है! हालांकि यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, [यह बेहतर होगा] (http://meta.stackexchange.com/q/8259) यहां उत्तर के आवश्यक हिस्सों को शामिल करने के लिए, और संदर्भ के लिए लिंक प्रदान करें। – Spontifixus

+1

इसे इंगित करने के लिए धन्यवाद। –

+0

कोई विचार क्यों हाइबरनेट ऐसा नहीं करता है? – webber

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