Oracle入门教程:ADF 中使用Sequence的方法总结


1,在EO的属性中使用Groovy

优:简单直接

缺:断号

  1. (new Oracle.jbo.server.SequenceImpl("XXXX_SEQ",adf.object.getDBTransaction())).getSequenceNumber()  
2,在EO对应的java类的create方法中对属性赋值

优:可以产生复杂的Sequence值

缺:断号

  1.       SequenceImpl sequence =  
  2.           new SequenceImpl("XXX_SEQ", getDBTransaction());  
  3.       oracle.jbo.domain.Number seqNum = sequence.getSequenceNumber();  
  4.       String strSeq = 'SIH_' + seqNum;  
  5.       setStorageInHeaderCode(strSeq);  
3,使用DBSequence类型

在数据库端创建Trigger给表的字段赋值,在EO中将该字段的类型设置为DBSequence。
优:避免断号

缺:界面中显示的值与最终commit保存到数据库中的值不同。

  1. CREATE OR REPLACE TRIGGER ASSIGN_SVR_ID  
  2. BEFORE INSERT ON SERVICE_REQUESTS FOR EACH ROW  
  3. BEGIN  
  4. IF <strong>:NEW.SVR_ID IS NULL</strong> OR <strong>:NEW.SVR_ID < 0</strong> THEN  
  5. SELECT SERVICE_REQUESTS_SEQ.NEXTVAL  
  6. INTO :NEW.SVR_ID  
  7. FROM DUAL;  
  8. END IF;  
  9. END;  

相关内容