我在Spring中设置了几个.hbm.xml映射文件,我可以从日志中看出Spring看到它们并对它们做了些什么,但是在数据库中没有创建表。
Bean设置:
<beans:bean id="dataSourceEmbedded" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<beans:property name="driverClassName" value="org.h2.Driver" />
<beans:property name="url" value="jdbc:h2:~/myDbName" />
<beans:property name="username" value="sa" />
<beans:property name="password" value="" />
</beans:bean>
<beans:bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
p:dataSource-ref="dataSourceEmbedded">
<beans:property name="mappingLocations">
<beans:list>
<beans:value>classpath:path/to/schemas/Page.hbm.xml</beans:value>
<beans:value>classpath:path/to/schemas/Navigation.hbm.xml</beans:value>
</beans:list>
</beans:property>
<beans:property name="hibernateProperties">
<beans:value>
hibernate.show_sql=true
hibernate.dialect=${hibernate.dialect}
hibernate.hbmToDdlAuto=create
</beans:value>
</beans:property>
</beans:bean>
我知道页面和导航映射文件的路径是正确的 - 如果不是,则抛出错误,我可以看到在tomcat启动期间映射的字段:
DEBUG: org.hibernate.cfg.Configuration - Processing hbm.xml files
INFO : org.hibernate.cfg.HbmBinder - Mapping class: Page -> pages
DEBUG: org.hibernate.cfg.HbmBinder - Mapped property: Page ID -> pageid
DEBUG: org.hibernate.cfg.HbmBinder - Mapped property: title -> title
同样,在加载tomcat时,数据库被清楚地访问/锁定,因此正在发生事件!但是一旦它被加载并且我尝试查询或检查它,就不存在任何表格。
问题:为什么我的桌子没有被创建/我做错了什么?
答案 0 :(得分:2)
你使用的属性是错误的,它应该是'hibernate.hbm2ddl.auto'而不是'hibernate.hbmToDdlAuto'...但是你也可以设置{{1}的schemaUpdate
属性。 }}
LocalSessionFactoryBean
相关答案/信息:Hibernate hbm2ddl.auto possible values and what they do?
答案 1 :(得分:1)
正确的属性名称为hibernate.hbm2ddl.auto