トランザクション連携すると困った事に

英語でMLに問い合わせが来てあわくっております、六であります。

トランザクション連携すると、複数回の送信で同じDtoインスタンスを見てる場合同一トランザクション内で同じMaiの同じメソッドを呼び出すと、最終的な状態で全部送っちゃってます・・・。

TestMaiDto dto = new TestMaiDto();
dto.setFrom("hoge@example.com");
dto.setTo("fuga@example.com");
for(int i=0; i< 10; i++){
    dto.setText(Integer.toString(i));
    testMai.sendMail(dto);
}

こんな感じの場合、10通メールが飛んで、その文言はそれぞれ0〜9がテンプレートに埋め込まれるはずなんですが、トランザクション連携をしてると、コミットした時点の状態で送るので、10通とも全部9が埋め込まれてしまいます。

現在、トランザクション連携はデフォルトでOFFになってるので普通に使う分には問題ありませんが、古いバージョンだとONになってるので気をつけて下さい。

さて、どうしたもんかなあこれは・・・。

訂正:S2Mai内部でMailをキャッシュしてるので、Dtoインスタンスうんぬんの問題じゃなかった。