Oracle的表创建SQL语句如下:
CREATE TABLE plan_files(
  id number PRIMARY KEY,
  projectID varchar2(32)
);CREATE SEQUENCE seqID_plan_files
START WITH 1 
INCREMENT BY 1; Hibernate中对Oracle的映射定义如下:
<hibernate-mapping>
    <class name="com.table.PlanFiles" table="PLAN_FILES" schema="CJS">
        <id name="id" type="java.lang.Long">
            <column name="ID" precision="22" scale="0" />
            <generator class="sequence">
             <param name="sequence">seqID_plan_files</param>
            </generator>
        </id>
        <property name="projectid" type="java.lang.String">
            <column name="PROJECTID" length="32" />
        </property>
    </class>
</hibernate-mapping>当使用Hibernate向Oracle中插入数据时,提示如下:
Hibernate: select seqID_plan_files.nextval from dual
Hibernate: insert into CJS.PLAN_FILES (PROJECTID, ID) values (?, ?)
could not insert: [com.table.PlanSunProject]向各位高人请教,我错在哪个地方?谢谢

解决方案 »

  1.   

    应该不是Sequence的问题,配置都对,但我发现,你的mapping文件中,class name="com.table.PlanFiles"
    但报错中:could not insert: [com.table.PlanSunProject] 匹配不上,这是为什么?
      

  2.   

    错误提示是:
    Hibernate: select seqID_plan_files.nextval from dual
    Hibernate: insert into CJS.PLAN_FILES (PROJECTID, ID) values (?, ?)
    could not insert: [com.table.PlanFiles]
    谢谢
      

  3.   


    JAVA代码如下:
    session =mySessionFactory.getSession();
    tx =  session.beginTransaction();

    PlanFiles pFileTable=new PlanFiles();//向plan_files表中写入的对象
    String sID = UUID.randomUUID().toString();//用来生成数据库的主键id非常不错。
    pFileTable.setProjectid(sID);//上传文件的文件号与工程中的号相对应
    session.save(pFileTable);//将日照数据保存到plan_sun_project表中
    session.flush();如果使用SQL:
    insert into CJS.PLAN_FILES (PROJECTID, ID) values (seqID_plan_files.nextval , ?);
    提示错误为:ORA-00911: 无效字符
      

  4.   

    UUID.randomUUID().toString()生成的数据长度为36,而你的数据库设计为
    varchar(32)超长了,改一下数据库字段长度试试。
      

  5.   

    UUID.randomUUID().toString().replaceAll("-","");