JDBCWorkflow不支持Sequence

          Posted on 2006-03-02 21:01 killvin 閱讀(591) 評論(2)  編輯  收藏 所屬分類: osworkflow

          早上的時間被該死的WorkflwoStore里的主鍵生成策略("主鍵生成策略"來源于Hibernate文檔),該死的Sequence,從文檔資料上看到DB2是支持Sequence的,按照db2的文檔我執行了如下的語句:
          create sequence seq_os_wfentry start with 10 increment by 10;
          create sequence seq_os_currentsteps;
          執行-ok

          可是我以前不太了解Sequence的概念,這片資料倒是很有價值
          http://www-128.ibm.com/developerworks/db2/library/techarticle/dm-0407zhang/
          不過我以為查詢Sequence就只需要執行SELECT NEXT VALUE FOR seq_os_wfentry 就ok了,可是誰知道總是報錯?!在比較仔細的看了這片文章之后發現,其實根本就無法執行這條SQL!而需要這樣
          INSERT INTO EMPLOYEE ( SERIALNUMBER, FIRSTNAME, LASTNAME,
          SALARY) VALUES(NEXTVAL FOR EMPSERIAL, 'Martin', 'Wong', 1000.00)

          可是看看JDBCWorkflowStore的實現,這里是JDBCWorkflowStore的主鍵生成策略!
          protected long getNextEntrySequence(Connection c) throws SQLException {
          if (log.isDebugEnabled()) {
          log.debug("Executing SQL statement: " + entrySequence);
          }

          PreparedStatement stmt = null;
          ResultSet rset = null;

          try {
          stmt = c.prepareStatement(entrySequence);
          rset = stmt.executeQuery();
          rset.next();

          long id = rset.getLong(1);

          return id;
          } finally {
          cleanup(null, stmt, rset);
          }
          }

          c.prepareStatement(entrySequence) - 其實執行了一條SQL語句,所以看來JDBCWorkflow根本不支持Sequence生成策略!!

          該死的實現方式,看來我要重載其實現方式,不過說真的JDBCWorkflow的編碼人員其實水平不匝地!

          主站蜘蛛池模板: 疏附县| 金湖县| 长垣县| 美姑县| 常宁市| 历史| 昔阳县| 当涂县| 铁力市| 黑龙江省| 同江市| 汪清县| 育儿| 西林县| 都昌县| 新和县| 宣恩县| 黔东| 南昌县| 冕宁县| 榆社县| 通许县| 阿合奇县| 逊克县| 岑溪市| 安宁市| 台北市| 肇源县| 广德县| 邯郸市| 清苑县| 凤台县| 建阳市| 保靖县| 上高县| 沭阳县| 阿鲁科尔沁旗| 西林县| 原阳县| 洛阳市| 长子县|