No sé cómo se realiza el "anidamiento" de transacciones en Hibernate (ya que no creo que MySQL realmente pueda anidar transacciones).
Entonces, supongo que la segunda transacción (anidada) debe (?) ser una nueva conexión a la base de datos; de lo contrario, no sería posible revertir la transacción "anidada" sin afectar la transacción "externa".
Si este es realmente el caso, entonces probablemente se vea afectado por el nivel de aislamiento predeterminado de MySQL, que es REPEATABLE READ
que no permitirá que la transacción externa vea ningún dato que se haya confirmado después esa transacción comenzó.
Para probar esta teoría, intente cambiar el nivel de aislamiento (de la transacción externa) a READ COMMITTED
y ver si eso resuelve el problema.