0

Spring でいくつかの .hbm.xml マッピング ファイルをセットアップしました。ログから、Spring がそれらを見て何らかの処理を行っていることがわかりますが、DB にテーブルが作成されていません。

豆のセットアップ:

 <beans:bean id="dataSourceEmbedded" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <beans:property name="driverClassName" value="org.h2.Driver" />
    <beans:property name="url" value="jdbc:h2:~/myDbName" />
    <beans:property name="username" value="sa" />
    <beans:property name="password" value="" />
</beans:bean>

<beans:bean id="sessionFactory" 
      class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
      p:dataSource-ref="dataSourceEmbedded">
    <beans:property name="mappingLocations">
        <beans:list>
            <beans:value>classpath:path/to/schemas/Page.hbm.xml</beans:value>                                    
            <beans:value>classpath:path/to/schemas/Navigation.hbm.xml</beans:value>
        </beans:list>
    </beans:property>
    <beans:property name="hibernateProperties">
        <beans:value>
            hibernate.show_sql=true
            hibernate.dialect=${hibernate.dialect}
            hibernate.hbmToDdlAuto=create
        </beans:value>
    </beans:property>
</beans:bean>        

ページとナビゲーション マッピング ファイルへのパスが正しいことはわかっています。正しくない場合はエラーがスローされ、Tomcat の起動時にフィールドがマップされていることがわかります。

DEBUG: org.hibernate.cfg.Configuration - Processing hbm.xml files
INFO : org.hibernate.cfg.HbmBinder - Mapping class: Page -> pages
DEBUG: org.hibernate.cfg.HbmBinder - Mapped property: Page ID -> pageid
DEBUG: org.hibernate.cfg.HbmBinder - Mapped property: title -> title

同様に、Tomcat のロード中にデータベースが明らかにアクセス/ロックされているため、そこで何かが起こっています! しかし、いったんロードされてクエリを実行したり検査したりしようとすると、テーブルが存在しません。

質問:テーブルが作成されないのはなぜですか / 何を間違えたのですか?

4

2 に答える 2

2

使用したプロパティが間違っています。「hibernate.hbmToDdlAuto」ではなく「hibernate.hbm2ddl.auto」にする必要があります...ただし、その代わりに のschemaUpdateプロパティを設定することもできますLocalSessionFactoryBean

<beans:bean id="sessionFactory" 
      class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
      p:dataSource-ref="dataSourceEmbedded">
    <beans:property name="mappingLocations">
        <beans:list>
            <beans:value>classpath:path/to/schemas/Page.hbm.xml</beans:value>                                    
            <beans:value>classpath:path/to/schemas/Navigation.hbm.xml</beans:value>
        </beans:list>
    </beans:property>
    <beans:property name="schemaUpdate" value="true" />
    <beans:property name="hibernateProperties">
        <beans:value>
            hibernate.show_sql=true
            hibernate.dialect=${hibernate.dialect}
        </beans:value>
    </beans:property>
</beans:bean>     

関連する回答/情報: Hibernate hbm2ddl.auto の可能な値とその機能は?

于 2013-09-10T11:46:06.597 に答える
1

正しいプロパティ名はhibernate.hbm2ddl.auto

于 2013-09-10T11:50:26.137 に答える