Pessoal,
estou com um problema com o hibernate ao tentar deletar um registro com associação. Não quero excluir as associações, pelo contrário, quero avisar ao usuário que existem dependências…
na minha servlet chamo o delete do daoGenerico:
try {
hDAO.deleta(p);
logger.info(Constantes.NOMELOG + "Usuario: " + request.getSession().getAttribute("nomeUsuario") + " excluiu a pessoa:" + p.getNome());
response.getWriter().write("{success:true}");
} catch (ConstraintViolationException ex) {
logger.info(Constantes.NOMELOG + "********** AQUI EX 1 ***********");
ex.printStackTrace();
} catch (java.sql.BatchUpdateException ex) {
logger.info(Constantes.NOMELOG + "********** AQUI EX 2 ***********");
ex.printStackTrace();
} catch (Throwable t) {
logger.info(Constantes.NOMELOG + "********** AQUI EX 3 ***********");
t.printStackTrace();
}
o metódo delete:
public void deleta(T t) throws ConstraintViolationException, BatchUpdateException, Throwable {
logger.info("deletando " + t);
getSession().delete(t);
}
estou repassando as exceções para a servlet para fazer um teste, mas n está entrando em nenhum catch… e retorna para o meu jsp:
<html><head><title>Apache Tomcat/6.0.18 - Error report</title><style><!–H1 {font-family:Tahoma,Arial
,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif
;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color
:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black
;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76
;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black
;}A.name {color : black;}HR {color : #525D76;}–></style> </head><body><h1>HTTP Status 500 - </h1><HR
size=“1” noshade=“noshade”>type Exception report
message
<b>description </b> The server encountered an internal error () that prevented it from fulfilling this request.< /u><b>exception</b> <pre>javax.servlet.ServletException: org.hibernate.exception.ConstraintViolationException : Could not execute JDBC batch update br.com.filter.FilterHibernateSession.doFilter(FilterHibernateSession.java:29) org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390) </pre><b>root cause</b> <pre>org.hibernate.exception.ConstraintViolationException: Could not execute JDBC batch update org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71) org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253) org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:237) org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:146) org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener .java:298) org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27) org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000) org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338) org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106) br.com.filter.FilterHibernateSession.doFilter(FilterHibernateSession.java:23) org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390) </pre>root cause <pre>java.sql.BatchUpdateException: Cannot delete or update a parent row
: a foreign key constraint fails (singular/glb_orgao, CONSTRAINTFK3FCB5F307A648194FOREIGN KEY
(ID_ORDENADOR_DESPESA) REFERENCESglb_pessoa(PES_ID))
com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1666)
com.mysql.jdbc.PreparedStatement.executeBatch(PreparedStatement.java:1082)
com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeBatch(NewProxyPreparedStatement.java:1723
)
org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:237)
org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:146)
org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener
.java:298)
org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
br.com.filter.FilterHibernateSession.doFilter(FilterHibernateSession.java:23)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
</pre>note The full stack trace of the root cause is available in the Apache Tomcat
<HR size=“1” noshade=“noshade”><h3>Apache Tomcat/6.0.18</h3></body></html>
/6.0.18 logs.
Alguma sugestão?
Obrigado a todos…