0

常に制約エラーが発生します

原因: java.sql.BatchUpdateException: ORA-00001: 一意の制約違反

主キーが HBM によって生成されたテーブルに値を挿入する同期メソッドを呼び出そうとすると、次のようになります。

 <id name="logId" type="java.lang.Long">
        <column name="LOG_ID" precision="20" scale="0" />
        <generator class="sequence">
            <param name="sequence">TRANS_LOG_ID</param>
            <param name="allocationSize">100</param>
        </generator>
    </id>

これは、スレッドによって呼び出されるメソッドです。

public synchronized static void saveTransLog(String detail, String stage) {

        TransLog transLog = new TransLog();
        transLog.setDetail(detail);
        transLog.setStage(stage);

    ...

        TransLogService.save(transLog);

}

この種のマルチスレッド シナリオに対して、より信頼性の高いロック処理があるかどうかを知りたいです。または、制約違反を修正するために追加する必要があるものがありますか。

どうもありがとうございました。

4

1 に答える 1