diff --git a/src/main/java/org/lapaloma/aadd/cine/AppCine.java b/src/main/java/org/lapaloma/aadd/cine/AppCine.java index b836db8..285f7e5 100644 --- a/src/main/java/org/lapaloma/aadd/cine/AppCine.java +++ b/src/main/java/org/lapaloma/aadd/cine/AppCine.java @@ -30,16 +30,15 @@ public class AppCine { public static void main(String[] args) { AppCine app = new AppCine(); -// app.probarOperacionesContinente(); + app.probarOperacionesContinente(); -// app.probarOperacionesPais(); + app.probarOperacionesPais(); -// app.probarOperacionesDirector(); + app.probarOperacionesDirector(); -// app.probarOperacionesPelicula(); + app.probarOperacionesPelicula(); app.probarOperacionesActor(); - } private void probarOperacionesContinente() { @@ -66,7 +65,9 @@ public class AppCine { System.out.println("actualizarEntidad: " + continente); // Borrar continente - iDaoContinente.borrarEntidadPorClave("01"); + String codigoContinente="02"; + iDaoContinente.borrarEntidadPorClave(codigoContinente); + System.out.println("borrarEntidadPorClave: Continente - " + codigoContinente); } private void probarOperacionesPais() { @@ -97,7 +98,9 @@ public class AppCine { System.out.println("actualizarEntidad: " + pais); // Borrar Pais - iDaoPais.borrarEntidadPorClave(147); + int idPais=71; + iDaoPais.borrarEntidadPorClave(idPais); + System.out.println("borrarEntidadPorClave: Pais - " + idPais); } private void probarOperacionesDirector() { @@ -130,7 +133,9 @@ public class AppCine { System.out.println("actualizarEntidad: " + director); // Borrar Director - iDaoDirector.borrarEntidadPorClave(3); + int idDirector =3; + iDaoDirector.borrarEntidadPorClave(idDirector); + System.out.println("borrarEntidadPorClave: Director - " + idDirector); } private void probarOperacionesPelicula() { @@ -169,7 +174,9 @@ public class AppCine { System.out.println("actualizarEntidad: " + director); // Borrar Película - iDaoPelicula.borrarEntidadPorClave(3); + int idPelicula=3; + iDaoPelicula.borrarEntidadPorClave(idPelicula); + System.out.println("borrarEntidadPorClave: Película - " + idPelicula); } private void probarOperacionesActor() { @@ -200,7 +207,9 @@ public class AppCine { System.out.println("actualizarEntidad: " + actor2); // Borrar Actor - iDaoActor.borrarEntidadPorClave(4); + int idActor=4; + iDaoActor.borrarEntidadPorClave(idActor); + System.out.println("borrarEntidadPorClave: Actor - " + idActor); } } diff --git a/src/main/java/org/lapaloma/aadd/cine/dao/hbnt/ActorDaoHibernate.java b/src/main/java/org/lapaloma/aadd/cine/dao/hbnt/ActorDaoHibernate.java index ee3cc98..407a540 100644 --- a/src/main/java/org/lapaloma/aadd/cine/dao/hbnt/ActorDaoHibernate.java +++ b/src/main/java/org/lapaloma/aadd/cine/dao/hbnt/ActorDaoHibernate.java @@ -65,6 +65,7 @@ public class ActorDaoHibernate implements IOperacionesDAOEntidad transaccion.commit(); } catch (HibernateException e) { + transaccion.rollback(); e.printStackTrace(); } } @@ -82,6 +83,7 @@ public class ActorDaoHibernate implements IOperacionesDAOEntidad transaccion.commit(); } catch (Exception e) { + transaccion.rollback(); e.printStackTrace(); } } @@ -106,6 +108,7 @@ public class ActorDaoHibernate implements IOperacionesDAOEntidad transaccion.commit(); } catch (HibernateException e) { + transaccion.rollback(); e.printStackTrace(); } } diff --git a/src/main/java/org/lapaloma/aadd/cine/dao/hbnt/ContinenteDaoHibernate.java b/src/main/java/org/lapaloma/aadd/cine/dao/hbnt/ContinenteDaoHibernate.java index 8b71ed4..f026662 100644 --- a/src/main/java/org/lapaloma/aadd/cine/dao/hbnt/ContinenteDaoHibernate.java +++ b/src/main/java/org/lapaloma/aadd/cine/dao/hbnt/ContinenteDaoHibernate.java @@ -93,6 +93,41 @@ public class ContinenteDaoHibernate implements IOperacionesDAOEntidad { transaccion.commit(); } catch (HibernateException e) { + transaccion.rollback(); e.printStackTrace(); } } @@ -83,6 +84,7 @@ public class PaisDaoHibernate implements IOperacionesDAOEntidad { transaccion.commit(); } catch (Exception e) { + transaccion.rollback(); e.printStackTrace(); } } @@ -93,17 +95,50 @@ public class PaisDaoHibernate implements IOperacionesDAOEntidad { try (Session sesion = GestorSesionesHibernate.getSession();) { transaccion = sesion.beginTransaction(); + // Borrado de repartos en los que la localización de la película es en el país a borrar + // Borrado de repartos en los que el país de nacimiento del actor es en el país a borrar + // Borrado de repartos en los que el país de nacimiento del director de la película es en el país a borrar + String sentenciaBorradoRepartosPaisHQL = """ + DELETE FROM Reparto r + WHERE (r.pelicula.paisLocalizacion.identificador = :identificador + OR r.actor.pais.identificador = :identificador + OR r.pelicula.director.pais.identificador = :identificador) + """; + MutationQuery senteciaBorradoRepartosPais = sesion.createMutationQuery(sentenciaBorradoRepartosPaisHQL); + senteciaBorradoRepartosPais.setParameter("identificador", clave); + senteciaBorradoRepartosPais.executeUpdate(); - String sentenciaBorradoPaisesHQL = "DELETE FROM Pais p WHERE p.identificador = :identificador"; - MutationQuery senteciaBorradoPaises = sesion.createMutationQuery(sentenciaBorradoPaisesHQL); + // Borrado de los actores cuyo país de nacimiento es en el país a borrar + String sentenciaBorradoActorPaisHQL = "DELETE FROM Actor a WHERE a.pais.identificador = :identificador"; + MutationQuery senteciaBorradoActoresPais = sesion.createMutationQuery(sentenciaBorradoActorPaisHQL); + senteciaBorradoActoresPais.setParameter("identificador", clave); + senteciaBorradoActoresPais.executeUpdate(); + + // Borrado de los actores cuyo país de nacimiento es en un país del continente a borrar + String sentenciaBorradoPeliculasPaisHQL = """ + DELETE FROM Pelicula p + WHERE (p.paisLocalizacion.identificador = :identificador + OR p.director.pais.identificador = :identificador) + """; + MutationQuery senteciaBorradoRepartosPeliculasPais = sesion.createMutationQuery(sentenciaBorradoPeliculasPaisHQL); + senteciaBorradoRepartosPeliculasPais.setParameter("identificador", clave); + senteciaBorradoRepartosPeliculasPais.executeUpdate(); + + // Borrado de los directores cuyo país de nacimiento es en un país del continente a borrar + String sentenciaBorradoDirectoresPaisHQL = "DELETE FROM Director d WHERE d.pais.identificador = :identificador"; + MutationQuery senteciaBorradoDirectoresPais = sesion.createMutationQuery(sentenciaBorradoDirectoresPaisHQL); + senteciaBorradoDirectoresPais.setParameter("identificador", clave); + senteciaBorradoDirectoresPais.executeUpdate(); + + // Borrado de los países del continente a borrar + String sentenciaBorradoPaiseesHQL = "DELETE FROM Pais p WHERE p.identificador = :identificador"; + MutationQuery senteciaBorradoPaises = sesion.createMutationQuery(sentenciaBorradoPaiseesHQL); senteciaBorradoPaises.setParameter("identificador", clave); - senteciaBorradoPaises.executeUpdate(); - /* - Pais continente = sesion.find(Pais.class, clave); - sesion.remove(continente); - */ + senteciaBorradoPaises.executeUpdate(); + transaccion.commit(); } catch (HibernateException e) { + transaccion.rollback(); e.printStackTrace(); } }