create sequence sortSeq;
insert into tb_stu(id,name,sort) values('402881e725d312c60125d345c5c90003','cody',sortSeq.nextval);
这样的在sql语句里面能插入记录,现在要对该对象进行插入记录的时候
Stu st=new Stu();
st.setId('402881e725d312c60125d345c5c90003');
st.setName('cody');
st.setSort();   //该行不知道怎么写

解决方案 »

  1.   

    不写 “st.setSort();   //该行不知道怎么写”一行就应该好用了,写了就错了。。
      

  2.   

    不写的话,数据表里面的sort字段就是空值
      

  3.   

    我觉得空值应该和java的代码没关系,你看看你用的构架里应该怎么写sortSeq.nextval吧
      

  4.   

    你用的什么构架啊?我看你应该去java那边问问
      

  5.   

    --在sort字段创建触发器:当插入数据时,自动取序列的下一个值放入sort字段!就OK了!
      

  6.   

    CREATE TABLE tb(
    nameid NUMBER(10,0)  CONSTRAINT PK_TB PRIMARY KEY, 
    names varchar2(10));CREATE SEQUENCE tb_seq INCREMENT BY 1 START WITH 1 nomaxvalue nocycle nocache;CREATE OR REPLACE TRIGGER tb_trig_autoinc
    BEFORE INSERT ON tb
    FOR EACH ROW
    BEGIN
      IF (:new.nameid IS NULL) THEN 
        SELECT tb_seq.nextval INTO :new.nameid FROM DUAL;
      END IF;
    END;
    /insert into tb(names) values('luoyoumou');
    insert into tb(names) values('HuJingtao');select * from tb;
    -------------------------------    NAMEID NAMES
    ---------- --------------------
             1 luoyoumou
             2 HuJingtao
      

  7.   

    如果你用的是hibernate架构的话,去看一下,你的配置情况,我怀疑是你的配置出错了,如果序列都建立好了的话,就跟数据库没有关系了,看一下你的配置吧
      

  8.   

    hibernate也是先查序列值,再赋给属性,插入库中,这是hibernate完成的,我们就不管了,你检查一下配置文件。可能是反向生成的时候出错了,用序列反向生成
      

  9.   

    光插入的画用触发器最快。
    如果需要返回,可以用10g的DatabaseMetaData来获取返回的ID值。
    如果10g以下可能不支持,那就另外再写个语句来select这个ID了。
      

  10.   

    奇怪了……不管用什么框架,最终都是要转换成sql语句来执行,那么你直接把sql语句写成这样:insert into tb_stu(id,name,sort) values(:id,:name,sortSeq.nextval);java代码里面这样调用不就可以了吗?(当然oracle里面要创建sortSeq这个序列)Java codeStu st=new Stu();
    st.setId('402881e725d312c60125d345c5c90003');
    st.setName('cody');
    另外,据我对hibernate的浅薄理解,它也是有序列这玩艺的吧?那么就在sort字段填上hibernate的序列值好了呀?
      

  11.   

    自己想了个办法,我这样做的目的就是为了sort字段能自增(排序字段值不重复),在
    Java codeStu st=new Stu();
    st.setId('402881e725d312c60125d345c5c90003');
    st.setName('cody');
    的时候,可以从表中查询出当前的sort的字段的最大值加1(方法同步),就可以实现自己的这个对对象进行的插入sort字段值的自增