如果不存在Hibernate4和spring4 for mysql,则不会自动创建架构

时间:2014-09-09 05:04:58

标签: java mysql spring hibernate

如果不存在则自动创建Schema如何解决,如果存在数据库名称意味着表是自动创建但架构不存在意味着在运行时不创建架构怎么办。

hibernate属性

hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.show_sql=true
hibernate.hbm2ddl.auto=create-update ** i use these keyword seperately also //create or//update**



**xml configuration**

<bean id="sessionFactory"
        class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="packagesToScan" value="com.testing.domain" />
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">${hibernate.dialect}</prop>
                <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
                <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
                </prop>
            </props>
        </property>
    </bean>  

4 个答案:

答案 0 :(得分:2)

在您的代码中使用它,它会删除当前架构并创建一个新架构。

           <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto.create-drop}</prop>

答案 1 :(得分:0)

属性create-update没有hibernate.hbm2ddl.auto这样的值。所有可能的值都是

  • 验证
  • 更新
  • 创建
  • 创建降

请阅读documentation。您可以使用create创建架构(如果不存在)

答案 2 :(得分:0)

您可以使用import.sql

在资源中添加import.sql文件,如下所示:

/*create database at first time*/ 
CREATE SCHEMA your-database-name;

并在hibernate.cfg.xml中添加一行,如下所示:

<hibernate-configuration>
    <session-factory>
       ...
       ...
       <property name="hbm2ddl.import_files">import.sql</property>
       ...
       ...
    </session-factory>
</hibernate-configuration>

因此,如果数据库不存在,hibernate会创建新的数据库。

您的hibernate.hbm2ddl.auto设置应该定义数据库是否已创建(options are validate, create, update or create-drop

还有未记录的“none”值来完全禁用它。

定义如下

<prop key="hibernate.hbm2ddl.auto">create</prop>

创建会在创建sessionFactory时创建表格,并保持原样。

create-drop 的值将创建您的表格,然后在您关闭sessionFactory时删除它们。

验证:验证架构,不对数据库进行任何更改。

更新:更新架构。

答案 3 :(得分:0)

对于hibernate.hbm2ddl.auto而不是create,也可以使用select值。我们在我们的应用程序中使用如下,它工作得非常好。我认为这是关于hibernate.hbm2ddl.auto选择值的StackOverflow上的第一个信息,因为我用Google搜索但是徒劳无法找到“hibernate.hbm2ddl.auto”属性的选择值的任何链接。

<beans:bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    <beans:property name="dataSource" ref="databaseDataSource" />
    <beans:property name="hibernateProperties">
        <beans:props>
            <beans:prop key="hibernate.hbm2ddl.auto">select</beans:prop>
        </beans:props>
    </beans:property>
</beans:bean>

如果有人对select选项有进一步的输入。请分享。