1

以前は、私の Java Web プロジェクトは Eclipse の通常の構造を使用しており、コンテナー (Tomcat の場合) の開始時に、Hibernate はスキームを正しく生成していました。

現在、Maven インフラストラクチャを使用しています。必要なファイルを再配置し、すべて適切に構成しました (すべてが正常に機能しているためだと思います: Spring が開始され、Hibernate がデータベースに接続しています - データベースが以前に作成され、フェッチするデータがある場合)。すべての CRUD 操作をテストしましたが、動作しています。問題は、Hibernate が Eclipse の通常のインフラストラクチャ上で行ったように、スキーム (DDL) の生成を拒否することです。

追加情報:

  • Spring applicationContext.xml が起動しているため、私の persistence.xml は (いつものように) ほとんど空です。ファイルは変更していません。以前と同じように続行します。

    <!-- Location: src/main/resources/META-INF/persistence.xml -->
    <persistence>
        <persistence-unit name="jpa-persistence-unit" transaction-type="RESOURCE_LOCAL"/>
    </persistence>
    
  • Spring 構成の一部はここにあります (applicationContext.xml):

    <!-- Location: src/main/webapp/WEB-INF/applicationContext.xml -->
    <!-- ... -->
    <bean id="jpaVendorAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
        <property name="database" value="[DATABASE-NAME]" />
        <property name="showSql" value="true" />
        <property name="generateDdl" value="true" /> <!-- THIS CONFIGURATION WORKED PREVIOUSLY, NOW WITH MAVEN, IT'S IGNORED -->
        <property name="databasePlatform" value="[DIALECT]" />
    </bean>
    <!-- ... -->
    
  • 以前に発生したデフォルトの動作が必要なだけなので、Maven Hibernate プラグインは使用していません。

  • Maven はこの「generateDdl」プロパティを無効にしました!? どうして!?私は何をすべきか!?解決策が見つかりません。
4

1 に答える 1

1

私は解決策を見つけました。

Mavenにはそれについての欠点があります。

「DIALECT」が間違っていたため、Hibernate はデータベースを作成できませんでした。

方言を MySQL から MySQL-InnoDB に変更したことを思い出しました。Hibernate はこの問題をログに記録していましたが、slf4j-simple 依存関係が明示的にインポートされていなかったため、確認できませんでした。

時間をありがとう、ショーン。

于 2012-07-07T17:43:19.667 に答える