如果不存在则自动创建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>
答案 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选项有进一步的输入。请分享。