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.   

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

  2.   

    1、给出明确的错误提示
    2、insert into CJS.PLAN_FILES (PROJECTID, ID) values (seqID_plan_files.nextval , ?) 
    即可,不用再第二个变量。
      

  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.   

    insert into CJS.PLAN_FILES (PROJECTID, ID) values (seqID_plan_files.nextval , ?); 
    这个sql是在哪执行?sqlplus?
      

  5.   

    对,在sqlplus中。使用下面的SQL也不行:
    insert into PLAN_FILES (PROJECTID, ID) values (seqID_plan_files.nextval , ?);