我使用Hibernate进行数据保存时老是报对象不能被保存的错误(数据库是SQL2000)
//这个是OID主键配置
    <id name="UserID" column="UserID" type="long">
        <meta attribute="scope-set">private</meta>
        <generator class="native" />
    </id>//下面是对持久化对象进行设置
nPeopleInfo.setName("wang");
nPeopleInfo.setSex("na");//以下为将数据持久化保存到数据库
Session session = HibernateUtil.CurrentSession();
Transaction tx = session.beginTransaction();
session.save(nPeopleInfo);
//session.flush();
tx.commit();

session.close();
HibernateUtil.closeSession();//下面为运行时报的错误
严重: could not read a hi value
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]第 1 行: FOR UPDATE 子句仅允许用于 DECLARE CURSOR。Could not save object: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]第 1 行: FOR UPDATE 子句仅允许用于 DECLARE CURSOR。这个错误偶都弄了一下午了,硬是没得办法,大家想想办法,解决马上加分

解决方案 »

  1.   

    <generator class="native" />
    其中的native是根据底层数据库的能力选择identity, sequence 或者hilo中的一个。从你的错误来看,应该是SQLServer不能产生一个hi值。偶没用过SQL Server,但在用Oracle时,需要在数据库中建立一个HIBERNATE_SEQUENCE序列,不知道你是不是也遇到类似的问题了
      

  2.   

    你可以把native改成identity,应该就可以了.
    是你的native在sql server中不能自动选择一个自增字段所导致。
      

  3.   

    HILO算法需要额外一张数据库表来生成主键的,可能你没有设置,建议采取UUID-HEX方法来生成主键