Pessoal
como configurar o spring para fazer rollback em qualquer exeção que causar nos métodos de crud?
<!-- Configuração das transações -->
<tx:advice id="transactionAdvice" transaction-manager="transactionManager">
<!-- Configurações de transação -->
<tx:attributes>
<!-- Todos os métodos que começam com "select" são read-only -->
<tx:method name="get*" propagation="SUPPORTS" read-only="true" rollback-for="java.lang.Exception"/>
<!-- Os outros métodos requerem transação -->
<tx:method name="save" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
<tx:method name="update" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
</tx:attributes>
</tx:advice>
eu fiz assim
simulei uma exeção no método save,
mas não fez rollback
meu método save é esse
@SuppressWarnings("unchecked")
public PK save(Tipo novoObj) throws PersistenceException {
try {
return (PK) getHibernateTemplate().save(novoObj);
} catch (Exception e) {
logger.error("Error:",e);
throw new PersistenceException(e);
}
}
Eu simulei um erro de não aceitar um campo nullo.
então eu enviei para salvar um objeto com uma coleção nulla dentro dele.
ele salva o objeto, quando vai salvar a coleção, acontece uma exeção de campo not-null,
mas não faz rollback no objeto que ele inseriu…
tem outra forma? ou assim está errado