0
After validating all entities, I call a method to perform several operations in the bank, in which if one of them goes wrong, all the above must be undone.
When arriving at the "throw new Exception("Testing Transaction Rollback");" line where I am trying to force the rollback, the same does not happen, inserted records are not removed from the database and changes are not undone after exiting the "persistirEntities" method();".
Short example of the code:
@Service
public class produtoService {
public void fluxoPrincipal() {
try {
validacao = validarEntidades();
p = persistirEntidades(validacao);
} catch(Exception ex) {
}
}
@Transactional(propagation = Propagation.REQUIRES_NEW, rollbackFor = Exception.class)
private Produto persistirEntidades(...) throws Exception{
persistirMarca();
persistirProduto();
persistirCategoriaDoProduto();
persistirCaracteristicasDoProduto();
throw new Exception("Testando Rollback da Transação"); // tentando forçar rollback
}
@Transactional
private Marca persistirMarca(Marca m) {
// realiza insert ou update do objeto M
}
@Transactional
private Produto persistirProduto(Produto p) {
// realiza insert ou update do objeto p
}
@Transactional
private ProdutoCategoria persistirProdutoCategoria(ProdutoCategoria pc) {
// realiza insert ou update do objeto pc
}
@Transactional
private List<String> persistirCaracteristicasDoProduto(List<ProdutoCaracteristica> caracteristicas, Produto produto) {
// realiza diversos inserts ou updates
// realiza delete de alguns objetos
}
}