0

バッチセッションオブジェクトでカスタムSQLを実行しようとしています

@Insert("INSERT INTO ticker(Ticker, GetUpdate) VALUES(#{symbol}, 1) ON DUPLICATE KEY UPDATE GetUpdate = 1")
void enableQuoteforSymbol(@Param("symbol") String symbol);

しかし、バッチのフラッシュとコミットを担当する次のコードには、いくつかの不思議な動作があります

while(true == continueProcessing.get())
{
    List<BatchResult> batchResult;
    try 
    {
        batchResult = batchSqlSession.flushStatements();

        if(batchResult.size() > 0 )
        {
            batchSqlSession.commit();
            batchSqlSession.clearCache();
        }

        Thread.sleep(configurationManager.BATCH_COMMITER_DELAY);
    }
    catch (Exception ex) 
    {
        logger.error("BatchService::run() - ", ex);
    }
}

それは完全に実行され、batchSqlSession.flushStatements()は実行されたステートメントの数を返します。前のバッチが正常に実行されたにもかかわらず、このコードbatchResult = batchSqlSession.flushStatements(); およびbatchSqlSession.commit(); 次の反復で同じ古いバッチを再実行します。なぜ ?

4

1 に答える 1

0

バグのようです: http ://code.google.com/p/mybatis/issues/detail?id = 695

次のバージョンですでに修正されています。

于 2013-01-22T21:41:18.933 に答える