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