Chinaunix首页 | 论坛 | 博客
  • 博客访问: 788265
  • 博文数量: 142
  • 博客积分: 10288
  • 博客等级: 上将
  • 技术积分: 2905
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-03 13:19
文章分类

全部博文(142)

文章存档

2019年(2)

2009年(51)

2008年(89)

分类: Java

2008-05-06 17:40:00

 

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。

 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。
................
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。

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

 

然后我选择用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文件中将
这里的type类型从 Integer 改成 long类型.

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

increment我试了可以成功。identity没有测试过。

阅读(916) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~