Eliminar en Hibernate
Publicado por Mercedes (125 intervenciones) el 22/07/2008 20:18:55
Buenas tardes!!
Espero que alguien pueda echarme una mano, porque no consigo encontrar la solución...
Estoy intentando eliminar una fila de mi base de datos (MySql) con Hibernate, y resulta que este objeto tiene relaciones con otras tablas (claves foráneas).
Bien, el comportamiento que deseo es que si elimino por ejemplo, una empresa, se eliminen a su vez todo lo relacionado con ella, como clientes, presupuestos, proveedores... Para ello, he utilizado el atributo cascade="delete" en los <set>.
Al intentar eliminarlo me salta el siguiente error:
org.hibernate.PropertyValueException: not-null property references a null or transient value: es.proyecto.hibernate.mapeos.Empresa.usuarios
at org.hibernate.engine.Nullability.checkNullability( Nullability.java:72)
at org.hibernate.event.def.DefaultDeleteEventListener .deleteEntity(DefaultDeleteEventListener.java:173)
at org.hibernate.event.def.DefaultDeleteEventListener .onDelete(DefaultDeleteEventListener.java:110)
at org.hibernate.impl.SessionImpl.fireDelete(SessionI mpl.java:761)
at org.hibernate.impl.SessionImpl.delete(SessionImpl. java:739)
at es.proyecto.hibernate.dao.EmpresaDAO.eliminarEmpre sa(EmpresaDAO.java:191)
at es.proyecto.hibernate.bl.EmpresaBL.eliminarEmpresa (EmpresaBL.java:32)
at es.proyecto.struts.action.EmpresaAction.eliminarEm presa(EmpresaAction.java:229)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Native MethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(De legatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.struts.actions.DispatchAction.dispatchM ethod(DispatchAction.java:274)
at org.apache.struts.actions.DispatchAction.execute(D ispatchAction.java:194)
at org.apache.struts.action.RequestProcessor.processA ctionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process( RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(Act ionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doGet(Actio nServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:803)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invo ke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invo ke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invok e(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.servic e(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(H ttp11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol$Http11 ConnectionHandler.processConnection(Http11BaseProt ocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.process Socket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThr ead.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlR unnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Thread.java:595)
Me imagino que haya gente que si que haya podido realizar esta operación pues no me parece que sea nada extraño.
Muchas gracias
Un saludo
Espero que alguien pueda echarme una mano, porque no consigo encontrar la solución...
Estoy intentando eliminar una fila de mi base de datos (MySql) con Hibernate, y resulta que este objeto tiene relaciones con otras tablas (claves foráneas).
Bien, el comportamiento que deseo es que si elimino por ejemplo, una empresa, se eliminen a su vez todo lo relacionado con ella, como clientes, presupuestos, proveedores... Para ello, he utilizado el atributo cascade="delete" en los <set>.
Al intentar eliminarlo me salta el siguiente error:
org.hibernate.PropertyValueException: not-null property references a null or transient value: es.proyecto.hibernate.mapeos.Empresa.usuarios
at org.hibernate.engine.Nullability.checkNullability( Nullability.java:72)
at org.hibernate.event.def.DefaultDeleteEventListener .deleteEntity(DefaultDeleteEventListener.java:173)
at org.hibernate.event.def.DefaultDeleteEventListener .onDelete(DefaultDeleteEventListener.java:110)
at org.hibernate.impl.SessionImpl.fireDelete(SessionI mpl.java:761)
at org.hibernate.impl.SessionImpl.delete(SessionImpl. java:739)
at es.proyecto.hibernate.dao.EmpresaDAO.eliminarEmpre sa(EmpresaDAO.java:191)
at es.proyecto.hibernate.bl.EmpresaBL.eliminarEmpresa (EmpresaBL.java:32)
at es.proyecto.struts.action.EmpresaAction.eliminarEm presa(EmpresaAction.java:229)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Nativ e Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Native MethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(De legatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.apache.struts.actions.DispatchAction.dispatchM ethod(DispatchAction.java:274)
at org.apache.struts.actions.DispatchAction.execute(D ispatchAction.java:194)
at org.apache.struts.action.RequestProcessor.processA ctionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process( RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(Act ionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doGet(Actio nServlet.java:414)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet .java:803)
at org.apache.catalina.core.ApplicationFilterChain.in ternalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.do Filter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invo ke(StandardWrapperValve.java:210)
at org.apache.catalina.core.StandardContextValve.invo ke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke( StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invok e(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.servic e(CoyoteAdapter.java:151)
at org.apache.coyote.http11.Http11Processor.process(H ttp11Processor.java:870)
at org.apache.coyote.http11.Http11BaseProtocol$Http11 ConnectionHandler.processConnection(Http11BaseProt ocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.process Socket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThr ead.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlR unnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Thread.java:595)
Me imagino que haya gente que si que haya podido realizar esta operación pues no me parece que sea nada extraño.
Muchas gracias
Un saludo
Valora esta pregunta


0