generator中使用increment经验总结(hibernate)

王朝other·作者佚名  2006-05-27
窄屏简体版  字體: |||超大  

generator中使用increment经验总结(hibernate)

tomcat5.5+struts+hibernate2.1+jtds_jdbc+sqlserver2000项目

在hibernate中我本来想在generator中使用native自动让系统选择generator类型,select,update,del正确,但insert时候报错:

[ERROR] TableGenerator - could not read a hi value <java.sql.SQLException: 第 1 行: FOR UPDATE 子句仅允许用于 DECLARE CURSOR。>java.sql.SQLException: 第 1 行: FOR UPDATE 子句仅允许用于 DECLARE CURSOR。

at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:365)

at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2781)

..............

[DEBUG] JDBCExceptionReporter - SQL Warning <java.sql.SQLWarning: Preparing the statement failed: 第 1 行: FOR UPDATE 子句仅允许用于 DECLARE CURSOR。>java.sql.SQLWarning: Preparing the statement failed: 第 1 行: FOR UPDATE 子句仅允许用于 DECLARE CURSOR。

................

Caused by: java.sql.SQLException: 第 1 行: FOR UPDATE 子句仅允许用于 DECLARE CURSOR。

...............

[WARN] JDBCExceptionReporter - SQL Warning: 1003, SQLState: S1000

[WARN] JDBCExceptionReporter - Preparing the statement failed: 第 1 行: FOR UPDATE 子句仅允许用于 DECLARE CURSOR。

[ERROR] JDBCExceptionReporter - Could not save object <java.sql.SQLException: 第 1 行: FOR UPDATE 子句仅允许用于 DECLARE CURSOR。>java.sql.SQLException: 第 1 行: FOR UPDATE 子句仅允许用于 DECLARE CURSOR。

................

然后我选择用identity,在sqlserver中选择标识递增,希望sqlserver自己帮我递增id号.但是报错:

[ERROR] ReflectHelper - IllegalArgumentException in class: com.shjinbang.hibernate.User, setter method of property: userid

[ERROR] ReflectHelper - expected type: java.lang.Integer, actual value: java.lang.Long

[WARN] UserDAO - net.sf.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling: argument type mismatch setter of com.shjinbang.hibernate.User.userid

[DEBUG] JDBCTransaction - rollback

我又选择increment,让hibernate帮我递增id号,也是以上的错误.

我修改了与数据库映射的Java类,将Integer改成Long类型,同时在对应的hibernate映射文件 ,User.hbm.xml文件中将

<id column="userid" name="userid" type="long"> 这里的type类型从 Integer 改成 long类型.

运行成功.

我估计increment和identity都是可以正确使用的,就是很奇怪的是:必须用Long类型才能递增id号?

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航