私は私が持っている(としたい)ことを意味しているWildFly 8.2.0からWildFly 10.0.0に移行しようとしている
をやりたいですHibernate 4.3からHibernate 5.0に移行します。Hibernateは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を読んでいると私は命名戦略変化に見舞われています。私はhavemanyquestionsこれについては約これだが、私のものは少し違うようだ。
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}
私には奇妙されているもの:
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
私は彼が正しいDBテーブルにエンティティを結合していることは、たとえば見たデバッグログに切り替えた場合:Hibernateはテーブルが見つからないと文句を言いアプリが動作すること。この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;
}
私はテーブル名と列名が明示的に指定している:私は休止状態それを構成している
は、ばねORM抽象化だ
@Entity
@Table(name = "SEC_USER")
public class User extends BaseEntity {
@Column(name = "LOGIN", nullable = false, unique = true)
private String login;
質問
- このテーブルにログメッセージが表示されないようにするには?
- テーブル名に明示的に名前が付けられているのはなぜですか?
- なぜ彼はカラム名について納得していませんか?
- なぜ彼はが一見正しく働いていますか?私はthis
- 設定hibernate.implicit_naming_strategyにレガシーJPAた4.2.5に
- アップグレード春4.1.9を試してみました何
手動でデフォルトのスキーマを作成し、db_ownerロールを割り当てました。私は休止状態4.私は少しと私はカタログ(これは何でも)とスキーマを見ていない休止状態InformationExtractorJdbcDatabaseMetaDataImpl.javaで見つかっ休止デバッグしている
で前にこれをしなければならなかったことはありません注意してください。私は彼がスキーマを見なければならないと思う。以下のスクリーンショットを参照してください。カタログとスキーマはnullです。休止5のよう
Hmm。それは本当に意味をなさない。あなたは同時に複数のものを試していないと確信していますか? SQLドライバのバージョンはこれとは関係ありません。 –
ええ、本当に。私はスキーマに関するすべての変更を元に戻し、 'hibernate.implicit_naming_strategy'セットだけを残してから、JDBCドライバを前後に切り替えました。たぶんhttp://stackoverflow.com/users/1025118/vlad-mihalceaこのスレッドが表示され、それにコメントします:) –