MyBatisで「A Cursor is already closed.」が出たときの対処法をメモしておきます。
環境
@Transactional
を付与する
MyBatisでCursor
を使うときは、セッションをオープンしてやる必要があります。具体的には、Cursor
を使うメソッドに@Transactional
を付与してやればOKです。
以下のように、データベースからレコードを1件ずつ読み込む処理では、@Transactional(readOnly = true)
を付与してあげましょう。
まとめ
MyBatisで「A Cursor is already closed.」が出たときの対処法でした。