tomcat启动后,hibernate报告update错误。。。。。

平台启动后,

报出如下错误:

信息: Starting Servlet Engine: Apache Tomcat/6.0.14 22:16:42,281 INFO ProxoolFacade:86 - Proxool 0.9.1 (23-Aug-2008 11:10) 22:16:50,312 ERROR SchemaUpdate:155 - Unsuccessful: alter table T_RESOURCE add ACTIONCLASS nvarchar(255) 22:16:50,312 ERROR SchemaUpdate:156 - 各表中的列名必须唯一。在表 'T_RESOURCE' 中多次指定了列名 'ACTIONCLASS'。 22:16:50,312 ERROR SchemaUpdate:155 - Unsuccessful: alter table T_PERSONALMESSAGE add constraint FK47AB1BBC165F6CAC foreign key (BODYID) references T_MESSAGEBODY 22:16:50,312 ERROR SchemaUpdate:156 - 列 'T_MESSAGEBODY.ID' 的数据类型与外键 'FK47AB1BBC165F6CAC' 中的引用列 'T_PERSONALMESSAGE.BODYID' 的数据类型不同。 22:16:50,328 ERROR SchemaUpdate:155 - Unsuccessful: alter table T_RESOURCE add constraint FK47D00399EFF37830 foreign key (LINKID) references T_LINK 22:16:50,328 ERROR SchemaUpdate:156 - 列 'T_LINK.ID' 的数据类型与外键 'FK47D00399EFF37830' 中的引用列 'T_RESOURCE.LINKID' 的数据类型不同。 22:16:52,265 INFO AutoAuditJobManager:62 - ********************* Auto Audit Job Manager Init Jobs Start ******************** 22:16:52,812 INFO MssqlDocStaticTblDAO:91 - MS SQL Server: select FORMNAME from T_DOCUMENT doc where doc.STATEINT=1114112 group by FORMNAME

 

结合平台特点,找了找原因:

这个是hibernate的一个bug,将其update sql关闭就好了,关闭hibernate update sql,就是在hibernate.properties文件中把这条注释关掉“hibernate.hbm2ddl.auto update”

 

为何要这样子做呢,要学习一下hibernate的update特性:

在Hibernate的配置文件中设置 hibernate.hbm2ddl.auto=update 可以将映射文件的信息与数据库表结构同步 使用时在映射文件中增加一个字段后,数据表中也增加了一个字段; update只是更新表结构,但不能生成 请仔细参考一下hibernate.hbm2ddl.auto的配置参数,有以下四种: validate:加载hibernate时,验证创建数据库表结构 create:每次加载hibernate,重新创建数据库表结构,这就是导致数据库表数据丢失的原因。 create-drop:加载hibernate时创建,退出是删除表结构 update:加载hibernate自动更新数据库结构


 

 

你可能感兴趣的:(sql,tomcat,Hibernate,数据库,server,servlet,table)