トランザクションの「ネスト」がHibernateでどのように行われるかはわかりません(MySQLが実際にトランザクションをネストできるとは思わないため)。
したがって、2番目の(ネストされた)トランザクションはデータベースへの新しい接続(?)である必要があると思います。そうでない場合、「外部」トランザクションに影響を与えずに「ネストされた」トランザクションをロールバックすることはできません。
これが実際に当てはまる場合は、MySQLのデフォルトの分離レベルであるREPEATABLE READ
に見舞われる可能性があります。 これにより、外部トランザクションは後にコミットされたデータを見ることができなくなります。 そのトランザクションが開始されました。
この理論をテストするには、(外部トランザクションの)分離レベルをREAD COMMITTED
に変更してみてください。 それで問題が解決するかどうかを確認してください。