Я думаю, что ответ заключается в том, что вы не можете делать ничего подобного, используя JTA или другие RDBM.
Транзакции либо зафиксированы, либо отменены. После успешной фиксации их нельзя откатить.
Единственным возможным выходом может быть попытка использования вложенных транзакций и откат внешней транзакции. Но это, вероятно, не сработает:
- Не все реализации JTA поддерживают вложенные транзакции.
- Даже если они это сделали, нет гарантии, что внешняя транзакция будет успешно зафиксирована. И это может оставить вас с «другой» зафиксированной БД и откатом транзакции JTA.
Похоже, вам придется переосмыслить свои API персистентности.