Nevím, jak se "vnořování" transakcí provádí v Hibernate (protože nevěřím, že MySQL může skutečně vnořovat transakce).
Předpokládal bych tedy, že druhá (vnořená) transakce musí (?) být novým připojením k databázi – jinak by nebylo možné vrátit „vnořenou“ transakci bez ovlivnění „vnější“ transakce.
Pokud je tomu skutečně tak, pak jste pravděpodobně zasaženi výchozí úrovní izolace MySQL, která je REPEATABLE READ
což nedovolí vnější transakci vidět žádná data, která byla potvrzena po že transakce začala.
Chcete-li otestovat tuto teorii, zkuste změnit úroveň izolace (vnější transakce) na READ COMMITTED
a uvidíte, zda to problém vyřeší.