2012-07-02 18 views
9

मेरे पास हाइबरनेट और स्प्रिंग ढांचे के साथ मेवेन प्रोजेक्ट है। मैं हाइबरनेट को टेबल स्वचालित रूप से बनाना चाहता हूं, लेकिन सभी मौजूदा टेबल अभी गिराए गए हैं और आवश्यक तालिकाओं को नहीं बनाया गया है। कोई अपवाद सत्र कारखाने आरंभीकरण के दौरान फेंक दिया जाता है, लेकिन जब मैं एक Player इकाई को बचाने की कोशिश, अपवाद फेंक दिया जाता है:हाइबरनेट स्वचालित रूप से टेबल नहीं बनाता

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: टेबल 'billboarddb.player' नहीं है मौजूद

अगर मैं टेबल मैन्युअल बना सकते हैं और संपत्ति को बदलने hibernate.hbm2ddl.auto"validate" है, तो सब कुछ ठीक काम करता है। क्या आपके पास कोई विचार है, क्यों हाइबरनेट टेबल नहीं बनाते?

स्प्रिंग विन्यास फाइल:

<context:component-scan base-package="org.meluk.billboard.business.controller" /> 
<tx:annotation-driven transaction-manager="txManager" /> 
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="locations" > 
     <list> 
      <value>/WEB-INF/config/jdbc.properties</value> 
     </list> 
    </property> 
</bean> 
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="${hibernate.connection.driver_class}" /> 
    <property name="url" value="${hibernate.connection.url}" /> 
    <property name="username" value="${hibernate.connection.username}" /> 
    <property name="password" value="${hibernate.connection.password}" /> 
</bean> 
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" > 
    <property name="dataSource" ref="dataSource" /> 
    <property name="configLocation" value="/WEB-INF/hibernate.cfg.xml" /> 
    <property name="packagesToScan" value="org.meluk.billboard.jpa" /> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">${hibernate.dialect}</prop> 
      <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> 
      <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop> 
      <prop key="hibernate.c3p0.min_size">${hibernate.c3p0.min_size}</prop> 
      <prop key="hibernate.c3p0.max_size">${hibernate.c3p0.max_size}</prop> 
      <prop key="hibernate.c3p0.timeout">${hibernate.c3p0.timeout}</prop> 
      <prop key="hibernate.c3p0.max_statements">${hibernate.c3p0.max_statements}</prop> 
     </props> 
    </property> 
</bean> 

<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory" /> 
</bean> 

jdbc.properties फ़ाइल:

hibernate.connection.driver_class=com.mysql.jdbc.Driver 
hibernate.connection.url=jdbc:mysql://127.0.0.1:3306/BillboardDB 
hibernate.connection.username=root 
hibernate.connection.password=1234 
hibernate.default_schema=BillboardDB 
hibernate.dialect=org.hibernate.dialect.MySQLInnoDBDialect 
hibernate.hbm2ddl.auto=create 
hibernate.show_sql=true 
hibernate.c3p0.min_size=5 
hibernate.c3p0.max_size=20 
hibernate.c3p0.timeout=1800 
hibernate.c3p0.max_statements=50 

हाइबरनेट निर्भरता:

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-entitymanager</artifactId> 
    <version>${hibernateVersion}</version> 
</dependency> 
<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-c3p0</artifactId> 
    <version>${hibernateVersion}</version> 
</dependency> 
<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-tools</artifactId> 
    <version>${hibernateToolsVersion}</version> 
</dependency> 
+0

http://stackoverflow.com/questions/4507142/does-hibernate-create-tables-in-the- डाटाबेस- स्वचालित रूप से – JMelnik

+0

का डुप्लिकेट हां वे समान हैं, लेकिन वहां टेबल ठीक उत्पन्न होते हैं। – Balconsky

+0

बस आपको एक विचार देने के लिए। अगर सब कुछ ठीक से कॉन्फ़िगर किया गया है तो अपने डेटाबेस –

उत्तर

25

मैं समस्या का समाधान करता हूं। हाइबरनेट MysqlInnoDBDialect के साथ तालिकाओं को नहीं बना सका। अब मैं इसके बजाय MySQL5InnoDBDialect का उपयोग करता हूं।

+1

वह fatalweb लिंक अब मेरे लिए काम नहीं करता है: '( – iamanyone

+1

मैंने पहले' MySQLDialect' का उपयोग किया और इसे बदल दिया 'MySQL5Dialect' तक ('5' जोड़ा गया)। क्या नौकरी भी थी। – Froxx

4

hibernateProperties रंगमंच की सामग्री के लिए निम्न प्रविष्टि जोड़ें।

<prop key="hibernate.hbm2ddl.auto">create</prop> 
+0

मैंने इसे परिभाषित किया: " $ {hibernate.hbm2ddl.auto}" – Balconsky

+0

y यह "com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException" फेंक रहा है? मैपिंग्स सही हैं? –

+0

हाँ, मैपिंग ठीक है। – Balconsky

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