के बजाय MySQL InnoDB तालिकाओं को बनाएँ MySQL InnoDB तालिकाओं (MyISAM के बजाय) बनाने के लिए मैं हाइबरनेट (जेपीए का उपयोग करके) कैसे प्राप्त कर सकता हूं? मुझे ऐसे समाधान मिल गए हैं जो टेबल बनाने के लिए SQL फ़ाइल उत्पन्न करने के लिए हाइबरनेट का उपयोग करते समय काम करेंगे, लेकिन कुछ भी नहीं जो "फ्लाई पर" काम करता है।हाइबरनेट: MyISAM
उत्तर
आप हाइबरनेट बोली निर्दिष्ट और org.hibernate.dialect.MySQLInnoDBDialect
यह काम किया! धन्यवाद! –
ध्यान दें कि यह उत्तर अब बहिष्कृत है। वर्तमान सुझाया गया दृष्टिकोण संपत्ति 'hibernate.dialect.storage_engine = innodb' का उपयोग करना है। Http://in.relation.to/2017/02/20/mysql-dialect-refactoring/ – Jules
का उपयोग आप अपने हाइबरनेट विन्यास में बोली सेटिंग को निर्दिष्ट कर रहे हैं नहीं कर सकते? यदि नहीं, तो हाइबरनेट डेटाबेस बोली को स्वत: पहचानने का प्रयास करेगा, और सबसे सुरक्षित MySQL dialec का चयन करेगा, जो MySQL 4 MyISAM है।
आप इसे एक विशिष्ट बोली दे सकते हैं अपने हाइबरनेट गुण को यह जोड़कर:
hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
देखें हाँ हमारे पास MySQL5Dialect सेट था। पारितोषिक के लिए धन्यवाद! –
मैं वसंत 3.2 के साथ hibernate4 का उपयोग करें और जेपीए में लपेट के लिए कोशिश कर रहा था।
मैंने अपनी खुद की कक्षा बनाने का अंत किया .... org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter की अपनी सामग्री को अपनी खुद की कक्षा फ़ाइल में कॉपी किया और MySQL बोली को बदलने के लिए एक subroutine के आउटपुट को संशोधित किया MySQL5InnoDBDialect। मुझे लगता है कि मैं कक्षा बढ़ा सकता था।
वैसे भी...
के रूप में संशोधित:
package com.imk.dao.hibernate;
public class HibernateJpaVendorAdapter extends AbstractJpaVendorAdapter {
[ snip snip snip --- use the original code ]
protected Class determineDatabaseDialectClass(Database database) {
switch (database) {
case DB2:
return DB2Dialect.class;
case DERBY:
return DerbyDialect.class;
case H2:
return H2Dialect.class;
case HSQL:
return HSQLDialect.class;
case INFORMIX:
return InformixDialect.class;
case MYSQL:
return MySQL5InnoDBDialect.class;
case ORACLE:
return Oracle9iDialect.class;
case POSTGRESQL:
return PostgreSQLDialect.class;
case SQL_SERVER:
return SQLServerDialect.class;
case SYBASE:
return SybaseDialect.class;
default:
return null;
}
}
}
आपको लगता है कि हो सकता है यह एक 'हैक' है, लेकिन, मैं यह काम करेगा लगता है। स्प्रिंग संदर्भ कॉन्फ़िगरेशन में, मैंने जोड़ा:
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="persistenceUnitName" value="MosJPA" />
<property name="jpaVendorAdapter">
<bean class="com.imk.dao.hibernate.HibernateJpaVendorAdapter">
<property name="database" value="MYSQL" />
</bean>
</property>
</bean>
तब मेरी कक्षा "डेटाबेस" एडाप्टर बीन के लिए उपयोग की जाती है। (कोई घटक स्कैनिंग, मेरी कक्षाओं META-INF/persistence.xml (डिफ़ॉल्ट स्थान) में सूचीबद्ध हैं)
ओह, लड़का .... खेद लोग ... और Googling एक और खोज परिणाम देता है:
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="persistenceUnitName" value="MosJPA" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="databasePlatform" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
</bean>
</property>
</bean>
तो, आपको कक्षा का विस्तार या परिवर्तन करने की आवश्यकता नहीं है ... मैंने जवाब देने से पहले मूल HibernateJpaVendorAdapter के मूल स्रोत कोड को पढ़ना चाहिए था। जिसने मुझे "डेटाबेसप्लेटफार्म" संपत्ति में चिपकाया ...
हाइबरनेट 5.2.8 के रूप में, अन्य उत्तरों द्वारा उपयोग की जाने वाली Mysql*InnoDBDialect
कक्षाएं बहिष्कृत हैं। नया समाधान निम्नलिखित संपत्ति को सेट करना है:
hibernate.dialect.storage_engine = innodb
अधिक जानकारी के लिए http://in.relation.to/2017/02/20/mysql-dialect-refactoring/ देखें।
वसंत-बूट 2.0.0M7 साथ निम्नलिखित मुझे (mysqld 5,7)
spring.jpa.hibernate.use-new-id-generator-mappings: true
spring.jpa.database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
- 1. MyISAM केवल
- 2. MySQL - InnoDB MyISAM
- 3. MySQL MyISAM तालिका लॉकिंग
- 4. mysql त्रुटि 'प्रकार = MyISAM'
- 5. MyISAM से InnoDB
- 6. लेनदेन के बिना जीवन (MyISAM)
- 7. लांग ब्लोब innodb या MyISAM
- 8. MySQL MyISAM डेटा हानि संभावनाएं?
- 9. mysql innodb बनाम myisam प्रविष्टियां
- 10. MySQL: प्रदर्शन INNODB बनाम MYISAM
- 11. जब MyISAM InnoDB से बेहतर है?
- 12. InnoDB बनाम MyISAM सम्मिलित क्वेरी समय
- 13. myisam तालिका विकल्प पर विदेशी कुंजी?
- 14. एक डेटाबेस में MyISAM और InnoDB टेबल
- 15. MySQL में InnoDB और MyISAM क्या है?
- 16. हाइबरनेट
- 17. हाइबरनेट
- 18. हाइबरनेट
- 19. हाइबरनेट
- 20. हाइबरनेट
- 21. हाइबरनेट
- 22. हाइबरनेट:
- 23. हाइबरनेट
- 24. हाइबरनेट
- 25. हाइबरनेट
- 26. हाइबरनेट
- 27. हाइबरनेट
- 28. हाइबरनेट:
- 29. हाइबरनेट
- 30. हाइबरनेट
के लिए काम किया है आप hbm2ddl config सेटिंग्स का उपयोग कर मतलब है? – skaffman
हां। जाहिर है कि 'delimiter = type = InnoDB' केवल स्क्रिप्ट आउटपुट के लिए काम करता है। मैंने इसे 'hibernate.hbm2ddl.auto = create' के साथ करने की कोशिश की और MyISAM टेबल मिला। –
इसके लिए एक जिरा बनाया: [एचएचएच -8050] (https://hibernate.onjira.com/browse/HHH-8050) –