Posted on 2006-03-02 21:01
killvin 閱讀(588)
評論(2) 編輯 收藏 所屬分類:
osworkflow
早上的時間被該死的WorkflwoStore里的主鍵生成策略("主鍵生成策略"來源于Hibernate文檔),該死的Sequence,從文檔資料上看到DB2是支持Sequence的,按照db2的文檔我執(zhí)行了如下的語句:
create sequence seq_os_wfentry start with 10 increment by 10;
create sequence seq_os_currentsteps;
執(zhí)行-ok
可是我以前不太了解Sequence的概念,這片資料倒是很有價值
http://www-128.ibm.com/developerworks/db2/library/techarticle/dm-0407zhang/
不過我以為查詢Sequence就只需要執(zhí)行SELECT NEXT VALUE FOR seq_os_wfentry 就ok了,可是誰知道總是報錯?!在比較仔細的看了這片文章之后發(fā)現(xiàn),其實根本就無法執(zhí)行這條SQL!而需要這樣
INSERT INTO EMPLOYEE ( SERIALNUMBER, FIRSTNAME, LASTNAME,
SALARY) VALUES(NEXTVAL FOR EMPSERIAL, 'Martin', 'Wong', 1000.00)
可是看看JDBCWorkflowStore的實現(xiàn),這里是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) - 其實執(zhí)行了一條SQL語句,所以看來JDBCWorkflow根本不支持Sequence生成策略!!
該死的實現(xiàn)方式,看來我要重載其實現(xiàn)方式,不過說真的JDBCWorkflow的編碼人員其實水平不匝地!