2012-04-17 20 views
6

मुझे गुण फ़ाइल से वसंत में मूल्यों को पारित करने का प्रयास करते समय निम्न त्रुटि मिल रही है, इसलिए मुझे उन्हें hibernate.cfg.xml में सीधे आपूर्ति करने की आवश्यकता नहीं है। क्या कोई बेहतर (और सही) दृष्टिकोण है? मुझे पता है कि गुण फ़ाइल का संदर्भ दिया जा रहा है क्योंकि यदि मैं अमान्य पासवर्ड डालता हूं, तो यह उस पर विफल रहता है। मैं किसी भी मदद के लिए आभारी होंगे।मैं वसंत/हाइबरनेट में jdbc.properties कैसे पास कर सकता हूं?

WARNING: No connection properties specified - the user must supply JDBC connections 
Exception in thread "main" org.hibernate.HibernateException: Hibernate Dialect must be explicitly set 
    at org.hibernate.dialect.DialectFactory.determineDialect(DialectFactory.java:57) 
    at org.hibernate.dialect.DialectFactory.buildDialect(DialectFactory.java:39) 
    at org.hibernate.cfg.SettingsFactory.determineDialect(SettingsFactory.java:426) 

यह applicationContext.xml है:

<context:component-scan base-package="cmsutil"/> 
    <context:property-placeholder location="jdbc.properties"/> 

    <bean id="dataSource" 
      class="org.springframework.jdbc.datasource.DriverManagerDataSource" 
      p:driverClassName="${jdbc.driverClassName}" 
      p:url="${jdbc.url}" 
      p:username="${jdbc.username}" 
      p:password="${jdbc.password}"/> 

    <bean id="sessionFactory" 
      class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" 
      p:dataSource-ref="dataSource" 
      p:configurationClass="org.hibernate.cfg.AnnotationConfiguration" 
      p:packagesToScan="cmsutil.*"> 

     <property name="exposeTransactionAwareSessionFactory" value="false" /> 

     <property name="hibernateProperties"> 
      <props> 
       <prop key="hibernate.dialect">${hibernate.dialect}</prop> 
       <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> 
       <prop key="hibernate.format_sql">${hibernate.format_sql}</prop> 
       <prop key="hibernate.generate_statistics">${hibernate.generate_statistics}</prop> 
      </props> 
     </property> 

    </bean> 

    <bean id="txnManager" 
      class="org.springframework.orm.hibernate3.HibernateTransactionManager" 
      p:sessionFactory-ref="sessionFactory"/> 

    <bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>   

यह मेरा hibernate.cfg.xml फ़ाइल है:

<hibernate-configuration> 
    <session-factory> 
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 
    <mapping resource="cmsutil.entity/contentcomponent.hbm.xml"/> 
    </session-factory> 
</hibernate-configuration> 

प्रति रमेश के अनुरोध - web.xml

<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/applicationContext.xml</param-value> 
    </context-param> 
    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 
    <servlet> 
     <servlet-name>dispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>2</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>dispatcher</servlet-name> 
     <url-pattern>*.htm</url-pattern> 
    </servlet-mapping> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <welcome-file-list> 
     <welcome-file>redirect.jsp</welcome-file> 
    </welcome-file-list> 
</web-app> 

रमेश के लिए, यह मेरी jdbc.propertie है रों, रूट निर्देशिका में स्थित (/src/java/jdbc.properties)

jdbc.driverClassName=com.mysql.jdbc.Driver 
jdbc.url=jdbc:mysql://xx:3306/x 
jdbc.username=y 
jdbc.password=z 


hibernate.dialect=org.hibernate.dialect.MySQLDialect 
hibernate.show_sql=true 
hibernate.format_sql=false 
hibernate.generate_statistics=false 

उत्तर

8

बजाय web.xml श्रोता

<servlet> 
    <servlet-name>context</servlet-name> 
    <servlet-class> 
     org.springframework.web.context.ContextLoaderServlet 
     </servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
में अपने applicationContext.xml

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
     <property name="location"><value>classpath:jdbc.properties</value></property> 
    </bean> 

अद्यतन में यह इस सेम जोड़ने

+0

सुझाव के लिए धन्यवाद। कोशिश की, लेकिन एक ही त्रुटि मिल गई। अधिक निराश। यह इसे बनाने से आसान होना चाहिए। – EdgeCase

+0

क्या आप web.xml को यहां अपडेट कर सकते हैं –

+0

आपके अनुरोध के अनुसार web.xml जोड़ा गया। धन्यवाद। – EdgeCase

0

मेरे पास एक ही समस्या थी लेकिन यह मेरे जावा कोड में एक त्रुटि का परिणाम था। buildSessionFactory() पर कॉल करने से पहले Configuration पर configure() पर कॉल करना आवश्यक था।

configure() विधि के लिए जावाडोक:

मैपिंग और गुण का प्रयोग करें एक आवेदन संसाधन नामित hibernate.cfg.xml में निर्दिष्ट।

टूटी कोड:

public static void main(String[] args) { 
     Configuration cfg = new Configuration(); 

     factory = cfg.buildSessionFactory(); // missing the configure() call 

     Session s = factory.openSession(); 
     Transaction tx = null; 
     try { 
      tx = s.beginTransaction(); 

समाधान:

public static void main(String[] args) { 
     Configuration cfg = new Configuration(); 

     factory = cfg.configure().buildSessionFactory(); 

     Session s = factory.openSession(); 
     Transaction tx = null; 
     try { 
      tx = s.beginTransaction(); 

नोट: मैं एक स्प्रिंग config का उपयोग नहीं किया गया था।

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

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