【问题标题】:Hibernate does not create my tablesHibernate 不会创建我的表
【发布时间】:2012-02-01 12:54:00
【问题描述】:

我在使用 Spring 和 Hibernate 时遇到了一个奇怪的问题。我开始在 hibernate.cfg.xml 中使用 Hibernate:

<property name="hbm2ddl.auto">create</property>

它运行良好,Hibernate 成功地在数据库中创建了所需的表。 现在我正在使用 Spring,我在 applicationContext.xml 中用于休眠的 bean 看起来像这样:

<bean id="mySessionFactory"
    class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="myDataSource" />
    <property name="mappingResources">
        <list>
            <value>domain/Entity.hbm.xml</value>
            <value>domain/Service.hbm.xml</value>
            <value>domain/User.hbm.xml</value>
            <value>domain/Arcos.hbm.xml</value>
        </list>
    </property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.hbm2dll.auto">create</prop>
        </props>
    </property>
</bean>

我不得不在某个时候删除由 Hibernate 创建的表,但 Spring 不会创建它们。我尝试使用create-drop 而不是create(以防万一有人问)。自从我使用 Hibernate 以来,我的 DB Schema 发生了变化,并且在我的代码中使用了很多 getBeans("...");,所以我为了创建表而重用我的 Hibernate-only 版本有点困扰。我也可以手动创建表格,但是使用这些框架有什么意义呢?

我确定我在某处做错了什么,但我找不到。控制台提示不存在名为“表名”的表,所以连接DB成功。

感谢您的宝贵时间:)

【问题讨论】:

  • 您是否尝试启用 show-sql true - 它可以帮助您。
  • 恕我直言,在重构代码时使用 ddl 会产生意想不到的结果...考虑通过其他机制(例如 Liquibase)管理 ddl。
  • 我会看看这个,谢谢你的建议!

标签: java hibernate spring jakarta-ee


【解决方案1】:

hibernate.hbm2dll.auto --> hibernate.hbm2ddl.auto

DLL = 动态链接库

DDL = 数据定义语言

【讨论】:

  • 确实糟糕!感谢您指出它解决了问题:)
【解决方案2】:

你的代码有错别字

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

在解决方案中

【讨论】:

    猜你喜欢
    • 2018-11-19
    • 2017-08-23
    • 2017-08-21
    • 2012-07-02
    • 2018-08-18
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    • 2019-05-24
    相关资源
    最近更新 更多