Я не знаю, как происходит "вложение" транзакций в Hibernate (поскольку я не верю, что MySQL может фактически вкладывать транзакции).
Таким образом, я бы предположил, что вторая (вложенная) транзакция должна (?) Быть новым соединением с базой данных - иначе было бы невозможно откатить "вложенную" транзакцию без воздействия на "внешнюю" транзакцию.
Если это действительно так, то вы, вероятно, поражены уровнем изоляции MySQL по умолчанию, равным REPEATABLE READ
, который не позволяет внешней транзакции видеть любые данные, которые были зафиксированы после * 1007.* эта транзакция началась.
Чтобы проверить эту теорию, попробуйте изменить уровень изоляции (внешней транзакции) на READ COMMITTED
и посмотреть, решит ли это проблему.