просто над saveAndFlush так-то тоже есть
@Transactionalтак что если транзакцию раньше не открыть, то точно не откатится.
а если транзакция открылась раньше вызова данного метода, то получится "вложенная транзакция", что по факту будет noop, и закроется она в момент закрытия самой внешней.
и да, там есть очень неприятный сюрприз в виде чекед-эксепшенов, о котором писали выше. хоть и давно работаю с JPA и spring-transactional, но периодически на него попадаюсь, т.к. на практике чекед-эксепшены используются редко, а когда все таки раз в год используются - об этой особенности можно и забыть уже.