2016-09-05 4 views
2

WildFly 10.1での実行をアップグレードしようとしているJBoss 6上で(問題なし)現在アプリケーションを実行しています。このアップグレードの多くは順調です。しかし、Hibernate 3.4(JBoss 6)からHibernate 5.1(WildFly 10.1)へのアップグレードはいくつかの問題を引き起こしています。hibernate.hbm2ddl.auto value = "更新" Hibenate 3.4から5.1への移行の問題

特に、私のpersistence.xmlには、次のプロパティが含まれています。

<property name="hibernate.hbm2ddl.auto" value="update"/> 

注意:私はアップグレードの一環としてスキーマやその他のDBの変更を行っていません。さらに、JBoss 6/Hibernate 3.4インスタンスの下で正常に実行されていたのと同じデータベースインスタンスを指しています。したがって、私は、このプロパティを含めるには、WildFly 10.1/Hibernate 5.1バージョンでの最初の実行時に実際に作業/更新する必要はないと確信しています。

ただし、このプロパティを含めると、1)誤って更新を行う必要があると判断し、2)失敗することがあります。これは、次のスタックトレースになり:(最終エラーによって確認されたように)

Failed to start service jboss.persistenceunit."app.ear#PU": org.jboss.msc.service.StartException in service jboss.persistenceunit."PU": javax.persistence.PersistenceException: [PersistenceUnit: PU] Unable to build Hibernate SessionFactory 
     ... 
     Caused by: javax.persistence.PersistenceException: [PersistenceUnit: PU] Unable to build Hibernate SessionFactory 
     ... 
     Caused by: org.hibernate.tool.schema.spi.SchemaManagementException: Unable to execute schema management to JDBC target [create index company_id_index on APPROVER (COMPANY_ID)] 
     ... 
     Caused by: org.postgresql.util.PSQLException: ERROR: relation "company_id_index" already exists 

ここでも、問題のテーブルとインデックスがすでに存在しています。

Hibernateは大文字と小文字を区別しなくなりました(COMPANY_ID_INDEXはcompany_id_indexとは異なります)?もしそうなら、それはそれがために使用されるように大文字と小文字が区別されるように

は、どのように私は(これのすべての下位にPostgresのデフォルトは....)

TIAを、それを構成することができます!

答えて

1

Doh!顔の手のひら!私は最近、Hibernate 5.1/Wildfly 10.1で経験しているように、Hibernate 3.4/JBoss 6でのhbm2ddlインデックスの作成に関連する同様のエラーも発生していることを発見しました。ただし、永続性モジュールの正常な起動を妨げていませんでした。本質的に、それらは微妙に抑制されていました。私はこれがHibernate 5.1/Wildfly 10.1での起動を妨げるので、これがHibernateのバージョンに関連する期待される変更であるかどうかは分かりません。

ここでの根本的な問題は、インデックス名がPostgresのスキーマ全体で一意でなければならないということです。したがって、FKからCOMPANY_IDまでの列を持つ複数のエンティティにはそれぞれ、インデックスの一意の名前が必要です。インデックスは、Postgresの関係(スキーマの要件を超えてユニークなものを駆動する)です。

混乱のための提案と謝辞ありがとうございます。

関連する問題