eu peguei um codigo aqui para gerenciar a transação mais estou meio confuso, alguem pode me dar um Help.
OBS: Eu fiquei na duvida, sobre uma variavel boolean, e dentro do if tem 2 begin() e no meio tem um rollback e passa depois true, me enrolei rsrs
@Priority(Interceptor.Priority.LIBRARY_BEFORE)
@Interceptor
@Transactional
public class TransactionInterceptor implements Serializable {
private static final long serialVersionUID = 1L;
@Inject
private EntityManager manager;
@AroundInvoke
public Object invoke(InvocationContext context) throws Exception {
EntityTransaction transaction = manager.getTransaction();
boolean owner = false;
try {
if (!transaction.isActive()) {
transaction.begin();
transaction.rollback();
transaction.begin();
owner = true;
}
return context.proceed();
} catch (Exception e) {
if (transaction != null && owner) {
transaction.rollback();
}
throw e;
} finally {
if (transaction != null && transaction.isActive() && owner) {
transaction.commit();
}
}
}
}