質問: false) String home(Model model) throws ServletException { (中略) updateMTempUser.setErrStatus(ConstantCom.ERR_STATUS_OUT_OF_DATE); updateMTempUser.setRecordDate(new Date()); updateMTempUser.setRecordUserCd(userId); mTempUserMapper.updateByPrimaryKeySelective(updateMTempUser); throw new LimitOverException(Errors.LIMIT_OVER, getMessage("E.IIS.0000", "有効期限が切れています。userCd=" + userId)); (後略) ``` 上記のようなソースでMapperでデータベース更新後、Exceptionをスローしているのですが、 トランザクションがコミットされてしまいます。 ※テスト用のメソッドですので業務的な意味はありません。 デバッグ実行したところ、mTempUserMapper.updateByPrimaryKeySelective実行後には既にコミットされているようでした。 spring.datasource.default-auto-commit=false を設定しているのでコミットされないと思っているのですが、うまくいかないようです。 何か見落としている点などがあるのでしょうか......。 上記のような現象に何か心当たりなどあるかたがおられましたら、 ご教授いただきたく思います。
回答: 自己解決しました。 @Transactional対象のメソッドが、 publicメソッドではないことが原因でした。 それにより、トランザクション管理対象外となっていたようです......。 これもエラーにして欲しいなぁ、などと思いました。とほほ。 お目汚し、失礼いたしました。