Como posso pegar o erro caso o autor esteja vinculado a um livro. Não caiu no catch da classe autorBean, mesmo dando a mensagem no console de RollbackException
Classe AutorBean
@Transacional
public void removeAutor(Autor autor) {
try {
this.dao.remove(autor);
mensagem = "Autor removido com sucesso";
tipoErro = FacesMessage.SEVERITY_INFO;
} catch (Exception e) {
mensagem = "Não é possível excluir autor com um livro vinculado";
tipoErro = FacesMessage.SEVERITY_ERROR;
}
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(tipoErro,
mensagem, ""));
}
@Transacional
@Interceptor
public class GerenciadorDeTransacao implements Serializable {
private static final long serialVersionUID = 1L;
@Inject
private EntityManager em;
private EntityTransaction transaction;
@AroundInvoke
public Object gerenciaTransacao(InvocationContext context) throws Exception {
Object resultado = null;
try {
//pega a transação
transaction = em.getTransaction();
// abre transacao
transaction.begin();
// "prossegue" com o método interceptado.
resultado = context.proceed();
// commita a transacao
transaction.commit();
} catch (Exception e) {
//verifica se a transação esta nula ou ativa
if(transaction != null && transaction.isActive()){
transaction.rollback();
}
throw e;
}
return resultado;
}
}