jetty-maven プラグインで Java Spring アプリケーションを実行しています。myBatis の挿入ステートメントを呼び出すと、ステートメントは自動的にコミットされます。ただし、更新を呼び出すと、ステートメントはコミットされません。myBatis のドキュメント (http://www.mybatis.org/spring/transactions.html) によると:
Spring 管理の SqlSession で SqlSession.commit()、SqlSession.rollback()、または SqlSession.close() を呼び出すことはできません。
myBatis update ステートメントでアプリケーションを自動コミットするように設定するにはどうすればよいですか?
ロギングを有効にしました。更新に関するログの状態は次のとおりです。
persistence.MyMapper.updateMyItem] - ooo 接続の使用 [net.sourceforge.jtds.jdbc.ConnectionJDBC3@af7eaf] 2012-12-12 17:20:31,684 DEBUG [com.persistence.MyMapper.updateMyItem] - ==> 準備中: 更新myTable セット日付 =? id=? 2012-12-12 17:20:31,700 DEBUG [com.persistence.MyMapper.updateMyItem] - ==> パラメーター: 2012-11-26 00:00:00.0 (タイムスタンプ)、0 (整数) 2012-12-12 17 :20:31,700 DEBUG [org.mybatis.spring.SqlSessionUtils] - 非トランザクション SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@19e86f9] 2012-12-12 17:20:31,700 DEBUG [org.springframework. jdbc.datasource.DataSourceUtils] - JDBC 接続を DataSource に戻す updateMyItem] - ==> 準備中: update myTable set date=? id=? 2012-12-12 17:20:31,700 DEBUG [com.persistence.MyMapper.updateMyItem] - ==> パラメーター: 2012-11-26 00:00:00.0 (タイムスタンプ)、0 (整数) 2012-12-12 17 :20:31,700 DEBUG [org.mybatis.spring.SqlSessionUtils] - 非トランザクション SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@19e86f9] 2012-12-12 17:20:31,700 DEBUG [org.springframework. jdbc.datasource.DataSourceUtils] - JDBC 接続を DataSource に返す updateMyItem] - ==> 準備中: update myTable set date=? id=? 2012-12-12 17:20:31,700 DEBUG [com.persistence.MyMapper.updateMyItem] - ==> パラメーター: 2012-11-26 00:00:00.0 (タイムスタンプ)、0 (整数) 2012-12-12 17 :20:31,700 DEBUG [org.mybatis.spring.SqlSessionUtils] - 非トランザクション SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@19e86f9] 2012-12-12 17:20:31,700 DEBUG [org.springframework. jdbc.datasource.DataSourceUtils] - JDBC 接続を DataSource に戻す
挿入時のログは次のとおりです。
2012-12-12 16:35:53,932 デバッグ [org.mybatis.spring.SqlSessionUtils] - 新しい SqlSession の作成 2012-12-12 16:35:53,932 デバッグ [org.mybatis.spring.SqlSessionUtils] - SqlSession [org.同期がアクティブでないため、apache.ibatis.session.defaults.DefaultSqlSession@22da8f] は同期用に登録されませんでした2012-12-12 16:35:53,932 DEBUG [org.springframework.jdbc.datasource.DriverManagerDataSource] - [jdbc:jtds:sqlserver://test/test] への新しい JDBC DriverManager 接続の作成 2012-12-12 16:35 :53,932 DEBUG [org.mybatis.spring.transaction.SpringManagedTransaction] - JDBC 接続 [net.sourceforge.jtds.jdbc.ConnectionJDBC3@3af3cb] は Spring 2012-12-12 16:35:53,932 DEBUG [com. .persistence.MyMapper.insertMyItem] - ooo 接続の使用 [net.sourceforge.jtds.jdbc.ConnectionJDBC3@3af3cb] 2012-12-12 16:35:53,932 DEBUG [com.persistence.MyMapper.insertMyItem] - ==> 準備中: 挿入myTable (id,date) の値 (?, ?) 2012-12-12 16:35:53,932 DEBUG [com.persistence.MyMapper.insertMyItem] - ==> パラメータ: 5(Integer), 2012-11-26 00 :00:00.0(タイムスタンプ) 2012-12-12 16:35:53,932 DEBUG [org.mybatis.spring.SqlSessionUtils] - 非トランザクション SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@22da8f] 2012-12 を閉じる-12 16:35:53,932 DEBUG [org.springframework.jdbc.datasource.DataSourceUtils] - JDBC 接続を DataSource に返すinsertMyItem] - ==> 準備中: myTable (id,date) 値に挿入 (?, ?) 2012-12-12 16:35:53,932 DEBUG [com.persistence.MyMapper.insertMyItem] - ==> パラメータ: 5(整数)、2012-11-26 00:00:00.0(タイムスタンプ) 2012-12-12 16:35:53,932 DEBUG [org.mybatis.spring.SqlSessionUtils] - 非トランザクション SqlSession [org.apache.ibatis.session. defaults.DefaultSqlSession@22da8f] 2012-12-12 16:35:53,932 DEBUG [org.springframework.jdbc.datasource.DataSourceUtils] - JDBC 接続を DataSource に返すinsertMyItem] - ==> 準備中: myTable (id,date) 値に挿入 (?, ?) 2012-12-12 16:35:53,932 DEBUG [com.persistence.MyMapper.insertMyItem] - ==> パラメータ: 5(整数)、2012-11-26 00:00:00.0(タイムスタンプ) 2012-12-12 16:35:53,932 DEBUG [org.mybatis.spring.SqlSessionUtils] - 非トランザクション SqlSession [org.apache.ibatis.session. defaults.DefaultSqlSession@22da8f] 2012-12-12 16:35:53,932 DEBUG [org.springframework.jdbc.datasource.DataSourceUtils] - JDBC 接続を DataSource に返すdefaults.DefaultSqlSession@22da8f] 2012-12-12 16:35:53,932 DEBUG [org.springframework.jdbc.datasource.DataSourceUtils] - JDBC 接続を DataSource に返すdefaults.DefaultSqlSession@22da8f] 2012-12-12 16:35:53,932 DEBUG [org.springframework.jdbc.datasource.DataSourceUtils] - JDBC 接続を DataSource に返す
insert ステートメントと update log ステートメントは、同じ基本的な手順を示しているようです。