Pessoal bom dia, é o seguinte, estou fazendo um teste gerando um erro de insert na trigger (de propósito), o objetivo é pegar a mensagem de erro retornado pela trigger, porém não estou conseguindo passar esta mensagem para frente, quando faço o insert eu consigo capturar a mensagem normalmente
public void salvar(T entidade) throws MinhaException {
try {
em.persist(entidade);
em.flush();
} catch (Exception e) {
System.out.println("###################Exception" + e.getMessage()); // aqui pega a mensagem da trigger normalmente
throw new MinhaException(e.getMessage());
}
}
Neste ponto eu tenho a mensagem perfeita da maneira que eu gerei na trigger, mas quando vou no método do ManagedBean (que chama o salvar) ele entra no catch da Exception (e não da MinhaException) e em vez da mensagem original é retornado um “Transaction rolled back”
public void salvar() {
try {
ejb.salvar(this.getEntidade());
} catch (MinhaException e) {
System.out.println("MINHAEXCEPTION");
System.out.println(e.getMessage());
} catch (Exception ex) {
System.out.println("EXCEPTION");
System.out.println(ex.getMessage()); // entra nesta exception com a mensagem Transaction rolled back e não na MinhaException
}
}
como eu poderia capturar a mensagem original de erro?