gpt4 book ai didi

java - 如果 mysql 不存在,则 hibernate 创建模式

转载 作者:行者123 更新时间:2023-11-29 01:06:19 31 4
gpt4 key购买 nike

我正在使用 Spring 3 和 hibernate 4。

这是我的 root-context.xml

<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="url" value="jdbc:mysql://localhost:3306/musicstore"></property>
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="username" value="root"></property>
<property name="password" value="123456"></property>
</bean>


<bean id="sessionFactory" name="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>

<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop>
<prop key="hibernate.max_fetch_depth">3</prop>
<prop key="hibernate.jdbc.fetch_size">50</prop>
<prop key="hibernate.jdbc.batch_size">10</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>

</props>
</property>
<property name="packagesToScan" value="domain" /><!--
entity -->
</bean>

我有这个:

WARN : org.hibernate.engine.jdbc.internal.JdbcServicesImpl - HHH000342: Could not obtain connection to query metadata : Unknown database 'musicstore'

当我在 tomcat 中部署我的项目时,我希望 hibernate 将创建模式(如果它不存在)。我试过 hibernate.hbm2ddl.auto= create 但它不起作用

有什么方法可以在运行时自动创建模式吗?任何建议都会有所帮助:D

提前致谢。

最佳答案

我不知道如何以特定于 hibernate 的方式解决您的问题,但 MySQL 的一个很酷的事情是您可以(至少在某些条件下)指定要创建的数据库本身,如果它没有'通过在末尾附加“?createDatabaseIfNotExist=true”,连接字符串已经存在。

因此,通过将 Spring 配置更改为以下内容,您应该会获得所需的结果。

<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="url" value="jdbc:mysql://localhost:3306/musicstore?createDatabaseIfNotExist=true"></property>
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="username" value="root"></property>
<property name="password" value="123456"></property>
</bean>


<bean id="sessionFactory" name="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>

<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect </prop>
<prop key="hibernate.max_fetch_depth">3</prop>
<prop key="hibernate.jdbc.fetch_size">50</prop>
<prop key="hibernate.jdbc.batch_size">10</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>

</props>
</property>
<property name="packagesToScan" value="domain" /><!--
entity -->
</bean>

值得注意的是,除了它的工作原理,我对此一无所知,因此它很可能有我不知道的局限性。

关于java - 如果 mysql 不存在,则 hibernate 创建模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26273097/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com