Если вложенная транзакция создана через getTransaction(), то ее откат приведет к невозможности коммита охватывающей транзакции. Например:
void methodA() {
Transaction tx = persistence.createTransaction();
try {
// (1) вызываем метод, создающий вложенную транзакцию
methodB();
// (4) в этот момент будет выброшено исключение, т.к. транзакция
// помечена как rollback only
tx.commit();
} finally {
tx.end();
}
}
void methodB() {
Transaction tx = persistence.getTransaction();
try {
// (2) допустим здесь возникло исключение
tx.commit();
} catch (Exception e) {
// (3) обрабатываем его и выходим
return;
} finally {
tx.end();
}
}Если же транзакция в methodB() будет создана через createTransaction(), то ее откат не окажет никакого влияния на коммит охватывающей транзакции в methodA().

