我在用Spring集成Hibernate时,配置好了Hibernate.cfg.xml和applicationContext.xml都没用问题,但是在Tomcat启动的时候,无法创建数据库,这些Tomcat启动时的提示信息。我的OpenSessionInViewFilter等都配好了,经过之前的测试,都成功了,目前最怀疑的就是User.hbm.xml文件配置。其实,我的多个数据库表均无法生成,只列出User表无法创建的信息。另外我的entity.hbm.xml和Hibernate.cfm.xml都是通过Ant+Xdoclet生成的。
错误日志信息:**11:46:40,328  INFO DatabaseMetadata:91 - table not found: T_User
**11:46:40,515 DEBUG SchemaUpdate:149 - create table T_User (id integer not null auto_increment, username varchar(255) not null unique, password varchar(255) not null, createTime datetime, expireTime datetime, person integer unique, primary key (id))
**11:46:40,593 ERROR SchemaUpdate:155 - Unsuccessful: create table T_User (id integer not null auto_increment, username varchar(255) not null unique, password varchar(255) not null, createTime datetime, expireTime datetime, person integer unique, primary key (id))User.hbm.xml文件的主要配置为:<hibernate-mapping>
  <class table="T_User" name="com.shizhong.oa.model.User">
    <id name="id">
      <generator class="native"/>
    </id>
    <property name="username" not-null="true" unique="true"/>
    <property name="password" not-null="true"/>
    <property name="createTime" update="false"/>
    <property name="expireTime"/>
    <many-to-one unique="true" name="person"/>
  </class>
</hibernate-mapping>万能的CSDN,请救救我吧,这个问题困扰了我一个上午,以前建数据库时好像与今天没有什么不同,为什么今天就不行了呢?

解决方案 »

  1.   

    你先用spring框架在用hibernate,那个hibernate.cfg.xml不要了,只要那个applicationContext.xml配置不就行了
      

  2.   

    用了hibernate的自动建表?这个通常是不用的。
      

  3.   

    我也是初学SSH框架,只是做了一些联系,没有做深度的集成。只是在web.xml文件里面配置了个OpenSessionInView,个人认为还是需要保留hibernate.cfg.xml文件的,因为很多数据库的配置都在这里,而用OpenSessionInView只不过是减少了一些配置,由Spring组件来接管。问题已经解决,原因是我之前创建过数据库,但是出错看,后来直接进了MySql的目录,将数据库文件夹给删除了,然而可能由于mysql的机制吧,我也不太明白,Tomcat在加载Spring的组件进行创建数据库的时候,仍然可以看到我以前删掉的数据库,但是,很明显,是不完整的。所以,才报错的,我的配置没有任何问题。后来在Mysql的命令行输入命令删除数据库:drop database xx 之后,再重启Tomcat,发现没有任何问题,所有的数据库表均正确地创建了……就这个问题,困扰了我半天,感谢大家的会复发……注意:删除数据库最好通过Mysql的命令行:"drop database 数据库名",然后才能重新创建并使用同名的数据库,希望大家不要重蹈覆辙……
      

  4.   

    <property name="hibernate.hbm2ddl.auto">update</property>
      

  5.   

    hibernate.cfg.xml这个文件里的内容可以移植到applictioncontext-*.xml文件里
      

  6.   

    楼主可以去试试用   spring结合hibernate中的这个  org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean
    去连接数据库
      

  7.   

    <property name="hibernate.hbm2ddl.auto">update </property>5楼正确
    我们也在用 spring + hibernate + JSF
      

  8.   


    谢谢,不过我很清楚update和create的区别,早就设置了。问题出在,那是我以前创建的数据库,而且已经手动删除(虽然没有彻底删除),所以,Tomcat启动时,还是会认为没有数据库而去创建,但是创建时却发现,无法成功创建,我就理解到这里,再深入的,我就不清楚了。这可能就要涉及到Hibernate创建数据库和MySql的实现机制了……