क्या मैं
मैं जिसका मतलब है कि मेरे पास है (और चाहते हैं) कि WildFly 8.2.0 से WildFly 10.0.0 को विस्थापित करने के लिए कोशिश कर रहा हूँ क्या करना चाहते हैं Hibernate 4.3 से Hibernate 5.0 में माइग्रेट करने के लिए।हाइबरनेट 4 -> 5 माइग्रेशन: NamingStrategy परिवर्तन, टेबल्स नहीं मिला
सेटअप
Java 8u40
Spring 4.1.9
SQL Server 2012
Wildfly 8.2.0 -> Wildfly 10.0.0
Hibernate 4.3.6 -> Hibernate 5.0.7
मैं migration guide पढ़ लिया है और मैं रणनीति नामकरण परिवर्तन ने टक्कर मार दी कर रहा हूँ। मैं havereadmanyquestions एसओ पर इसके बारे में, लेकिन मेरा थोड़ा अलग लगता है। हाइबरनेट शिकायत है कि टेबल नहीं मिला रहे हैं:
INFO [o.h.Version] HHH000412: Hibernate Core {5.0.7.Final}
INFO [o.h.cfg.Environment] HHH000206: hibernate.properties not found
INFO [o.h.cfg.Environment] HHH000021: Bytecode provider name : javassist
INFO [o.h.annotations.common.Version] HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
INFO [o.h.dialect.Dialect] HHH000400: Using dialect: org.hibernate.dialect.SQLServerDialect
INFO [o.h.envers.boot.internal.EnversServiceImpl] Envers integration enabled? : true
INFO [o.h.validator.internal.util.Version] HV000001: Hibernate Validator 5.2.3.Final
INFO [o.h.tool.hbm2ddl.SchemaValidator] HHH000229: Running schema validator
INFO [o.h.t.s.e.i.InformationExtractorJdbcDatabaseMetaDataImpl] HHH000262: Table not found: SEC_AUTHORIZATION_RULES
INFO [o.h.t.s.e.i.InformationExtractorJdbcDatabaseMetaDataImpl] HHH000262: Table not found: SEC_USER
More tables not found ...
INFO [o.h.hql.internal.QueryTranslatorFactoryInitiator] (ServerService Thread Pool -- 62) HHH000397: Using ASTQueryTranslatorFactory
जब मैं डीबग लॉगिंग में स्विच मैं उदाहरण के लिए देखा है कि वह सही डीबी मेज पर इकाई बाध्यकारी है:
DEBUG [o.h.c.a.EntityBinder] Bind entity com.company.user.User on table SEC_USER
DEBUG [o.h.c.Ejb3Column] Binding column: Ejb3Column{table=org.hibernate.mapping.Table(SEC_USER), mappingColumn=ID, insertable=true, updatable=true, unique=false}
क्या है मेरे लिए अजीब है कि ऐप काम करता है। इस Table not found
एस के बाद यह शिकायत नहीं करता है कि स्कीमा सही नहीं है। ऐप काम करता है। डेटा कार्यों का चयन, सम्मिलन, अद्यतन करना।
@Bean(name = "myEmf")
@DependsOn({"dataSource", "flyway"})
public LocalContainerEntityManagerFactoryBean entityManagerFactoryBean() {
LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
em.setDataSource(dataSource());
em.setPackagesToScan(new String[]{"com.company.**.*"});
em.setJpaVendorAdapter(new HibernateJpaVendorAdapter());
em.setJpaProperties(additionalProperties());
return em;
}
private Properties additionalProperties() {
Properties propFile = propertiesFile();
properties.setProperty("hibernate.hbm2ddl.auto", "validate");
properties.setProperty("hibernate.dialect", "org.hibernate.dialect.SQLServer2012Dialect");
properties.setProperty("hibernate.show_sql", "false");
properties.setProperty("hibernate.format_sql", "true");
properties.setProperty("hibernate.id.new_generator_mappings", "false");
properties.setProperty("hibernate.use_sql_comments", "false");
properties.setProperty("hibernate.implicit_naming_strategy", "legacy-jpa");
return properties;
}
इस correspoding इकाई में मैं तालिका नाम और स्तंभ नाम स्पष्ट नाम है:
मैं हाइबरनेट इसके माध्यम से कॉन्फ़िगर किया है वसंत-ORM अमूर्त है
@Entity
@Table(name = "SEC_USER")
public class User extends BaseEntity {
@Column(name = "LOGIN", nullable = false, unique = true)
private String login;
प्रश्न
- इस तालिका को कैसे नहीं मिला लॉग संदेश गायब हो जाते हैं?
- यदि मेरे पास टेबल नाम स्पष्ट रूप से नामित हैं तो वे क्यों दिखाई दे रहे हैं?
- वह कॉलम नामों के बारे में क्यों शिकायत नहीं कर रहा है?
- वह क्यों प्रतीत होता है सही?
क्या मैं
- उन्नयन स्प्रिंग 4.1.9 4.2.5 करने के लिए जो says he has support for Hibernate 5
- सेट hibernate.implicit_naming_strategyविरासत-जेपीए को this
सेट अनुसार करने की कोशिश की मैन्युअल रूप से डिफ़ॉल्ट स्कीमा और भूमिका db_owner असाइन किया। नोट मैं हाइबरनेट 4.
मैं थोड़ा और क्या मैं InformationExtractorJdbcDatabaseMetaDataImpl.java कि हाइबरनेट सूची (जो यह है) और स्कीमा नहीं देखता में पाया हाइबरनेट डिबग है के साथ पहले यह करने के लिए नहीं था। मुझे लगता है कि उसे स्कीमा देखना चाहिए। नीचे स्क्रीनशॉट देखें: कैटलॉग और स्कीमा शून्य हैं।अंतर्निहित और शारीरिक:
हम्म। यह वास्तव में कोई मतलब नहीं है। क्या आप वाकई एक ही समय में कई चीजों की कोशिश नहीं करते हैं? एसक्यूएल-ड्राइवर संस्करण के पास इसके साथ कुछ लेना देना नहीं चाहिए। –
हाँ, वास्तव में। मैंने स्कीमा के संबंध में अपने सभी परिवर्तनों को वापस कर दिया और केवल 'hibernate.implicit_naming_strategy' सेट छोड़ा और फिर जेडीबीसी चालक को आगे और पीछे स्विच किया और वह था। हो सकता है कि http://stackoverflow.com/users/1025118/vlad-mihalcea इस धागे को देखें और उस पर टिप्पणी करें :) –