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

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号?

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值