如题,我用java的ssh开发的以前涉及的自增长字段都是主键的,在映射文件里设置就能实现自增长,但怎么给其他字段设置自增长啊!!!

解决方案 »

  1.   

    -- 例如:
    scott@TBWORA> create table t(id number(18,0), name varchar2(20));表已创建。scott@TBWORA> create sequence t_seq start with 1 increment by 1 nocache;序列已创建。scott@TBWORA> CREATE OR REPLACE TRIGGER t_trig_autoinc
      2  BEFORE INSERT ON t
      3  FOR EACH ROW
      4  BEGIN
      5    IF (:new.ID IS NULL) THEN
      6      SELECT t_seq.nextval INTO :new.ID FROM DUAL;
      7    END IF;
      8  END;
      9  /触发器已创建scott@TBWORA> INSERT INTO t(name) values('luoyoumou1');已创建 1 行。scott@TBWORA> INSERT INTO t(name) values('luoyoumou2');已创建 1 行。scott@TBWORA> commit;提交完成。scott@TBWORA> select * from t;        ID NAME
    ---------- ----------------------------------------
             1 luoyoumou1
             2 luoyoumou2
      

  2.   


    ...这位高手没有理解LZ的意思,LZ是说在映射文件里的设置问题,也就是说是属开发类的问题,这跟数据库没有直接关系。
    在映射文件里你可将其设置为:identity或者number都可自增长!
      

  3.   

    这个触发器创建的以后我不对这个字段进行insert,他也会自增长吗
      

  4.   

                <key-property name="strre" type="java.lang.String">
                    <column name="STRREMARK" length="500" />
                </key-property>
                <key-property name="odtcreatetime" type="java.util.Date">
                    <column name="ODTCREATETIME" length="7" />
                </key-property>
                <key-property name="iorder" type="java.lang.Integer">
                    <column name="IORDER" precision="22" scale="0" />
                </key-property>
            </composite-id>
        </class>
    贴一小段映射文件,我想把这个iorder字段设置成自增长的,我每次对表进行操作不去管他,我插一跳记录他就会增加1,以前对主键添加序列的话可以            <generator class="sequence">
                 <param name="sequence">administer_sq</param>
                </generator>
    但对某个字段就不行,楼主是个新手额
      

  5.   

    如果没记错的话,在hibernate配置文件中把该字段的一个属性设置为increment,每次添加时,会取该字段的最大值,然后+1
      

  6.   

     <key-property name="iorder" type="java.lang.Integer">
    把这个type改成increment??
      

  7.   

    晕,我没让你设置type<property name="iorder" type="java.lang.Integer">
         <generator class="increment" />
    </property>
      

  8.   

    囧。完全没看懂LZ的意思。好吧,我承认,我跟JAVA兄不熟。也许,JAVA不认可这种写法。
    select 序列.nextval from dual;
      

  9.   


    在oracle数据库中建立squence 然后再hibernate中和序列挂钩
    <id name="id" column="id">
        <generator class="sequence">
             <param name="sequence_name">在数据库中创建的squence的名字</param>
        </generator>
    </id>