Duvida no Commit do hibernate

Olá pessoal,
estou com uma duvida. Tenho um sisteminha que utiliza hibernate, e ele dá um commit automatico , em algumas situações eu precisava da um commit na mao para consegui dá um rollback quando desse erro.
Tem como fazer isso ?

vlw :slight_smile:

cara,

se vc tiver num contexto transacional controlado pelo container, vc nao precisa se preecupar, pois ele faz isso para vc, basta depois do save, vc dar um flush.
mas se vc tiver controlando a transação na mão, ai vc tem que fazer commit e roolback na mao.

t+

entao estou utilizando um container, eu coloquei o flush mas não deu muito certo, pois eu salvo um registro em duas tabelas diferentes e se der algum erro na segunda tabela o que foi salvo na primeira tem que ser desfeito. e o flush não fez isso :frowning:

vc ta usando EJB ou Spring?

nem um dos dois… desculpa nesse projeto não utilizamos um framework para container.

ops é o JSF

cara,

vc vai ter algo assim

Transaction transaction = session.beginTransaction();
		try{
			transaction.begin();
			session.save(objeto);
			transaction.commit();
		} catch (Exception e){
			e.printStackTrace();
			transaction.rollback();
		}

t+

vou te mostra o meu drama rsrs…

Historico historico = new Historico();

historico .setAtividade(atividade);
				historico .setUsuario(getUsuarioLogado());
				historico .setAcao("2");
				historico .setDataInicio(new Date());
				historicoService.salvarHistorico(historico, getPRESTADOR());
Vendas vendas = new Vendas ();

				vendas .setAtividade(atividade);
				vendas .setStatus("21");
				vendasService.salvarVendas(vendas , getPRESTADOR());

Então se dê algum problema ao salvar vendas o registro inserido na tabela historico tem que ser desfeito.

e pelo que entendi do metodo que vocÊ me mandou ele só vai dá um rollback se tiver algum problema quando salvar, não é ? Sorry esta te enchendo tanto é que eu ainda sou javaBaby rsrs…

cara,

vc teria que ter algo sim

Transaction transaction = session.beginTransaction();  
        try{  
            transaction.begin();  
            Historico historico = new Historico();  
  
historico .setAtividade(atividade);  
                historico .setUsuario(getUsuarioLogado());  
                historico .setAcao("2");  
                historico .setDataInicio(new Date());  
				session.save(historico);
Vendas vendas = new Vendas ();  
  
                vendas .setAtividade(atividade);  
                vendas .setStatus("21");  
                session.save(venda);
            transaction.commit();  
        } catch (Exception e){  
            e.printStackTrace();  
            transaction.rollback();  
        } 

pq se houver algum erro em qualquer uma da inserção, seria dado o rollback

entendeu?

t+