Rozumiem problem. Kluczowa kwestia: Oracle JDBC nie pozwala na równoczesne operacje LOB na tym samym połączeniu, a REQUIRES_NEW w Spring domyślnie nie gwarantuje nowego połączenia — tylko nową transakcję logiczną.
Masz mniej więcej taki flow:
- Metoda A (
@Transactional) — otwiera transakcję, pobiera CLOB jakoInputStream, parsuje StAX-em - W trakcie parsowania wywołujesz Metodę B (
@Transactional(REQUIRES_NEW)) — Spring zawiesza transakcję A, otwiera nową transakcję B