Spring4整合Hibernate5时不能自动生成表结构

时间:2022-05-02 10:39:58

© 版权声明:本文为博主原创文章,转载请注明出处

1.问题描述:

  Spring4整合Hibernate5时,不再使用hibernate.cfg.xml,将其内容整合到Spring配置文件中,启动后不能自动创建表结构

2.解决方案:

  设置hibernateProperties时,需要设置hibernate前缀

  原本设置,不能自动创建表结构

<!-- 配置Hibernate相关属性 -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        <!-- 注入连接池 -->
        <property name="dataSource" ref="dataSource"/>
        <!-- 配置Hibernate属性 -->
        <property name="hibernateProperties">
            <props>
                <prop key="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop><!-- 方言 -->
                <prop key="hbm2ddl.auto">update</prop><!-- 是否自动创建数据库表结构 -->
                <prop key="show_sql">true</prop><!-- 是否展示SQL -->
            </props>
        </property>
        <!-- 扫描并加载注解的实体类 -->
        <property name="packagesToScan" value="org.*.model"/>
    </bean>

  修改后设置,可以自动创建表结构

<!-- 配置Hibernate相关属性 -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        <!-- 注入连接池 -->
        <property name="dataSource" ref="dataSource"/>
        <!-- 配置Hibernate属性 -->
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</prop><!-- 方言 -->
                <prop key="hibernate.hbm2ddl.auto">update</prop><!-- 是否自动创建数据库表结构 -->
                <prop key="hibernate.show_sql">true</prop><!-- 是否展示SQL -->
            </props>
        </property>
        <!-- 扫描并加载注解的实体类 -->
        <property name="packagesToScan" value="org.*.model"/>
    </bean>