-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: Delete ChildRecord exception ambiguity
PostPosted: Fri Apr 01, 2005 3:00 pm 
Newbie

Joined: Thu Feb 17, 2005 10:27 am
Posts: 8
Hibernate version: 2.1.7

Name and version of the database you are using: Oracle 9i


The stack trace below was generated when I intentionally triggered a child record delete error. Instead of getting a ConstraintViolationException, as I would have expected, I received a GenericJDBCException. I have modified the hibernate source to trigger a ConstraintViolationException from an oracle 2292 child record error code via the Oracle9Dialect class.

I was wondering why this type of error is not treated as a referential integrity error in hibernate. The pattern of the oracle error message in the SQLException matches your internal template for contraint violation errors. Logically, a delete that fails due to a child record is a type of constraint violation. Is this a bug of omission, or was there a conscious decision not to treat this type of error as a constraint violation? If this was intentional, could someone tell me why?

Thanks!

Original Stack trace:
com.sas.edu.educentral.exceptions.hibernate.HibernateTransactionException: net.sf.hibernate.exception.GenericJDBCException: could not delete: [com.sas.edu.educentral.edusa.beans.DiscountProgram#540779161]
at com.sas.edu.educentral.system.dbaccess.HibernateSessionUtil.commitTransaction(HibernateSessionUtil.java:116)
at com.sas.edu.educentral.edusa.data.DiscountProgramData.deleteDiscountProgram(DiscountProgramData.java:176)
at com.sas.edu.educentral.edusa.domain.DiscountProgramManager.deleteDiscountProgram(DiscountProgramManager.java:113)
at com.sas.edu.educentral.edusa.servlets.discpgm.DiscountProgramView.deleteDiscountProgram(DiscountProgramView.java:65)
at com.sas.edu.educentral.edusa.servlets.discpgm.DiscountProgramView.doPost(DiscountProgramView.java:50)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:526)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:306)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:385)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:745)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:675)
at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:868)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)
Caused by: net.sf.hibernate.exception.GenericJDBCException: could not delete: [com.sas.edu.educentral.edusa.beans.DiscountProgram#540779161]
at net.sf.hibernate.exception.ErrorCodeConverter.handledNonSpecificException(ErrorCodeConverter.java:90)
at net.sf.hibernate.exception.ErrorCodeConverter.convert(ErrorCodeConverter.java:79)
at net.sf.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:30)
at net.sf.hibernate.persister.AbstractEntityPersister.convert(AbstractEntityPersister.java:1332)
at net.sf.hibernate.persister.EntityPersister.delete(EntityPersister.java:599)
at net.sf.hibernate.impl.ScheduledDeletion.execute(ScheduledDeletion.java:29)
at net.sf.hibernate.impl.SessionImpl.executeAll(SessionImpl.java:2438)
at net.sf.hibernate.impl.SessionImpl.execute(SessionImpl.java:2396)
at net.sf.hibernate.impl.SessionImpl.flush(SessionImpl.java:2260)
at net.sf.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:61)
at com.sas.edu.educentral.system.dbaccess.HibernateSessionUtil.commitTransaction(HibernateSessionUtil.java:110)
... 22 more
Caused by: java.sql.SQLException: ORA-02292: integrity constraint (EDUSA.DISC_PGM_RULE_FK1) violated - child record found

at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:573)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1891)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1093)
at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2047)
at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1940)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2709)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:589)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:101)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:101)
at net.sf.hibernate.persister.EntityPersister.delete(EntityPersister.java:580)
... 28 more

New Stack trace (after code modification):
com.sas.edu.educentral.exceptions.hibernate.HibernateTransactionException: net.sf.hibernate.exception.ConstraintViolationException: could not delete: [com.sas.edu.educentral.edusa.beans.DiscountProgram#540779161]
at com.sas.edu.educentral.system.dbaccess.HibernateSessionUtil.commitTransaction(HibernateSessionUtil.java:116)
at com.sas.edu.educentral.edusa.data.DiscountProgramData.deleteDiscountProgram(DiscountProgramData.java:176)
at com.sas.edu.educentral.edusa.domain.DiscountProgramManager.deleteDiscountProgram(DiscountProgramManager.java:113)
at com.sas.edu.educentral.edusa.servlets.discpgm.DiscountProgramView.deleteDiscountProgram(DiscountProgramView.java:65)
at com.sas.edu.educentral.edusa.servlets.discpgm.DiscountProgramView.doPost(DiscountProgramView.java:50)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:526)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:306)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:385)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:745)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:675)
at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:868)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)
Caused by: net.sf.hibernate.exception.ConstraintViolationException: could not delete: [com.sas.edu.educentral.edusa.beans.DiscountProgram#540779161]
at net.sf.hibernate.exception.ErrorCodeConverter.convert(ErrorCodeConverter.java:81)
at net.sf.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:30)
at net.sf.hibernate.persister.AbstractEntityPersister.convert(AbstractEntityPersister.java:1332)
at net.sf.hibernate.persister.EntityPersister.delete(EntityPersister.java:599)
at net.sf.hibernate.impl.ScheduledDeletion.execute(ScheduledDeletion.java:29)
at net.sf.hibernate.impl.SessionImpl.executeAll(SessionImpl.java:2438)
at net.sf.hibernate.impl.SessionImpl.execute(SessionImpl.java:2396)
at net.sf.hibernate.impl.SessionImpl.flush(SessionImpl.java:2260)
at net.sf.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:61)
at com.sas.edu.educentral.system.dbaccess.HibernateSessionUtil.commitTransaction(HibernateSessionUtil.java:110)
... 22 more
Caused by: java.sql.SQLException: ORA-02292: integrity constraint (EDUSA.DISC_PGM_RULE_FK1) violated - child record found

at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:573)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1891)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1093)
at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2047)
at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1940)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2709)
at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:589)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:101)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:101)
at net.sf.hibernate.persister.EntityPersister.delete(EntityPersister.java:580)
... 28 more


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.