Hibernate无法创建我的表

4

我在使用Spring和Hibernate时遇到了一个奇怪的问题。我开始使用Hibernate,使用以下配置在hibernate.cfg.xml文件中:

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

这个程序运行良好,Hibernate 成功在数据库中创建所需的表。 现在我在使用 Spring,我的 applicationContext.xml 中用于 Hibernate 的 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以来,我的数据库模式已经改变,而且我在代码中使用了很多getBeans("...");,所以重用仅限于Hibernate的版本有点困扰我,因为这样也可以创建表格,但使用这些框架的意义何在?
我确定我在某个地方做错了,但我找不到原因。控制台提示错误,称没有名为"表名称"的表,因此已成功连接到数据库。
谢谢你花时间看这段话 :)

你尝试启用show-sql <prop key="hibernate.show_sql">true</prop>了吗?这可能会对你有所帮助。 - Aravind A
在我看来,当重构代码时,使用ddl可能会产生意想不到的结果...考虑通过其他机制(如Liquibase)来管理你的ddl。 - aweigold
2个回答

13

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

DLL = 动态链接库

DDL = 数据定义语言


哎呀,确实出了问题!谢谢你指出来,问题得到解决 :) - Max

1

你的代码中有一个错别字

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

在解决方案中


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接