2

我正在使用 Spring 3.* 使用 JPA hibernate impl,并且我已将 Spring org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter generateDdl 设置为 true,但我没有看到它实际上在做任何事情。我将它换成 false 并且在我的日志中得到相同的输出。有谁知道这个设置应该做什么?它不生成ddl。

<bean id="entityManagerFactory"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="persistenceUnitName" value="api" />
        <property name="dataSource" ref="dataSource" />
        <property name="jpaVendorAdapter" ref="jpaVendorAdapter" />
        <property name="jpaProperties">
            <props>
                <prop key="hibernate.use_sql_comments">${jpa.vendor.showsql}</prop>
                <prop key="hibernate.generate_statistics">${jpa.vendor.generate.statistics}</prop>
                <prop key="hibernate.archive.autodetection">class</prop>
                <prop key="hibernate.cache.use_second_level_cache">${cache.use.secondLevel}</prop>
                <prop key="hibernate.cache.use_query_cache">${cache.use.query}</prop>
            </props>
        </property>
    </bean>
<bean id="jpaVendorAdapter"
        class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
        <property name="showSql" value="${console.show.sql}" />
        <property name="generateDdl" value="true" />
        <property name="databasePlatform" value="org.hibernate.dialect.Oracle10gDialect" />
    </bean>
4

1 回答 1

2

如果您使用具有良好 Spring/XML 支持的 IDE(尤其是 IntelliJ IDEA),您可以查看每个属性应该做什么(在 IDEA 中将光标放在它上面并按 CTRL+Q)。规范说:

设置EntityManagerFactory初始化后是否生成DDL,创建/更新所有相关表。请注意,此标志的确切语义取决于底层持久性提供程序。对于任何更高级的需求,将适当的特定于供应商的设置指定为“jpaProperties”。

拥有该值true意味着如果数据库表不存在或需要更新,它将自动完成。如果该值为 false,则必须手动执行。

于 2013-09-20T18:32:00.600 回答