Estou com uma certá dificuldade em usar o try catch, o problema é que sei como usar e sei para que serve! Todos os outros meus try catch tão protegendo os código, mais em exemplo tenho um botão de excluir um produto exemplo, e esse produto já tá sendo acossiada a outra tabela, então o hibernate não deixa ele excluir esse produto. Oque é mais que certo, então eu quero mostrar uma msg para o usuario falando que não pode ser feita a exclusão, já tentei de várias formas varias excpetions, mais não cai o bloco catch!
Segue o código.
@Transacional
public void excluir() {
try {
this.categoriaProdutoDao.excluir(categoriaProduto);
Mensagem.mensagemInfo("Categoria excluida com sucesso");
} catch (RollbackException | ConstraintViolationException e) {
Mensagem.mensagemError("ERRO TESSSSTE");
}
}
Segue o erro no stack trace.
ADVERTÊNCIA: javax.persistence.RollbackException: Error while committing the transaction
javax.el.ELException: javax.persistence.RollbackException: Error while committing the transaction
Caused by: javax.persistence.RollbackException: Error while committing the transaction
at org.hibernate.internal.ExceptionConverterImpl.convertCommitException(ExceptionConverterImpl.java:75)
at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:71)
at br.com.bercalini.gerenciamento.Gerenciador.controleTransacao(Gerenciador.java:25)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Caused by: javax.persistence.PersistenceException: org.hibernate.exception.ConstraintViolationException: could not execute statement
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:147)
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:155)
at org.hibernate.internal.ExceptionConverterImpl.convertCommitException(ExceptionConverterImpl.java:56)
... 52 more
Caused by: org.hibernate.exception.ConstraintViolationException: could not execute statement
at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:59)
at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)
at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:111)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot delete or update a parent row: a foreign key constraint fails (`bercalini`.`produto`, CONSTRAINT `FKrxpw9uioejee8jhr8iva13m5g` FOREIGN KEY (`categoriaProduto_codigo`) REFERENCES `categoriaproduto` (`codigo`))
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1040)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4096)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2734)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2458)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2375)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2359)
at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:205)
... 68 more
ago 30, 2017 12:52:04 PM com.sun.faces.context.AjaxExceptionHandlerImpl handlePartialResponseError
GRAVE: javax.persistence.RollbackException: Error while committing the transaction
at org.hibernate.internal.ExceptionConverterImpl.convertCommitException(ExceptionConverterImpl.java:75)
Porque motivo não tá caindo no catch? Oque fazer para arrumar?