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