diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/Controllers/HotelController.java b/java/roomBooking/src/main/java/com/uva/roomBooking/Controllers/HotelController.java
index 587c57014ea64272b3be49cbed0706800bef484b..803edc35fdcbf2b5ec7fc96972e8ee2a7777391d 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/Controllers/HotelController.java
+++ b/java/roomBooking/src/main/java/com/uva/roomBooking/Controllers/HotelController.java
@@ -7,13 +7,16 @@ import java.time.LocalDate;
 import com.uva.roomBooking.Exceptions.HotelNotFoundException;
 import com.uva.roomBooking.Exceptions.InvalidDateRangeException;
 import com.uva.roomBooking.Exceptions.InvalidRequestException;
+import com.uva.roomBooking.Models.Booking;
 import com.uva.roomBooking.Models.Hotel;
 import com.uva.roomBooking.Models.Room;
+import com.uva.roomBooking.Repositories.BookingRepository;
 import com.uva.roomBooking.Repositories.HotelRepository;
 import com.uva.roomBooking.Repositories.RoomRepository;
 
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 
 @RestController
@@ -22,10 +25,13 @@ import org.springframework.web.bind.annotation.*;
 public class HotelController {
     private final HotelRepository hotelRepository;
     private final RoomRepository roomRepository;
+    private final BookingRepository bookingRepository;
 
-    public HotelController(HotelRepository hotelRepository, RoomRepository roomRepository) {
+    public HotelController(HotelRepository hotelRepository, RoomRepository roomRepository,
+            BookingRepository bookingRepository) {
         this.hotelRepository = hotelRepository;
         this.roomRepository = roomRepository;
+        this.bookingRepository = bookingRepository;
     }
 
     // Obtener todos los hoteles
@@ -50,9 +56,11 @@ public class HotelController {
 
     // Borrar un hotel junto con sus habitaciones (borrado en cascada)
     @DeleteMapping("/{id}")
+    @Transactional
     public ResponseEntity<Void> deleteHotel(@PathVariable Integer id) {
         Hotel target = hotelRepository.findById(id)
                 .orElseThrow(() -> new HotelNotFoundException(id));
+        bookingRepository.deleteAllByHotelId(id);
         hotelRepository.delete(target);
         return new ResponseEntity<>(HttpStatus.NO_CONTENT);
     }
diff --git a/java/roomBooking/src/main/java/com/uva/roomBooking/Repositories/BookingRepository.java b/java/roomBooking/src/main/java/com/uva/roomBooking/Repositories/BookingRepository.java
index b926175f84ff2d8748e4250e0bd8f574151ab25a..16c860a30fd168d4e03018ef02466dcd5adb7f99 100644
--- a/java/roomBooking/src/main/java/com/uva/roomBooking/Repositories/BookingRepository.java
+++ b/java/roomBooking/src/main/java/com/uva/roomBooking/Repositories/BookingRepository.java
@@ -3,6 +3,8 @@ package com.uva.roomBooking.Repositories;
 
 import com.uva.roomBooking.Models.Booking;
 
+import jakarta.transaction.Transactional;
+
 import java.time.LocalDate;
 import java.util.List;
 
@@ -17,8 +19,14 @@ public interface BookingRepository extends JpaRepository<Booking, Integer> {
     List<Booking> findByRoomIdAndDateRange(@Param("roomId") int roomId, @Param("startDate") LocalDate startDate,
             @Param("endDate") LocalDate endDate);
 
+    @Transactional
     @Modifying
     @Query("DELETE FROM Booking b WHERE b.id = ?1")
     void deleteBookingById(@Param("id") Integer id);
 
+    @Transactional
+    @Modifying
+    @Query("DELETE FROM Booking b WHERE b.roomId.hotel.id = ?1")
+    void deleteAllByHotelId(int hotelId);
+
 }