2011-10-05 9 views
8

Tengo un mapeo de muchos a uno en las reservas. Una reserva debe pertenecer a una habitación. Y una habitación puede tener varias reservas.Hibernate 3 En la cascada de eliminación

Si se elimina una habitación, me gustaría que todas las reservas en esa sala también se eliminen. ¿Cómo haré esto al usar anotaciones de hibernación?

@Entity 
public class Booking implements Serializable{ 

    @Id @GeneratedValue(strategy = GenerationType.AUTO) 
    private Long id; 
    private Date startDate; 
    private Date endDate; 
    private Date createdDate; 

    @ManyToOne 
    @JoinColumn (name = "roomId") 
    private Room room; 
... 
} 

Respuesta

10

En su entidad Room puede ordenar una

@OneToMany(cascade=CascadeType.REMOVE) 
private List<Booking> bookings; 
+0

no tengo una lista de reservas en mi entidad habitación. Y si es posible, me gustaría mantenerlo así. ¿Hay alguna forma de hacer esto sin introducir reservas en la sala? – user829237

+0

No. Pero agregar la colección no le cuesta nada (va a ser flojo por defecto) – Bozho

3

Uso

@ManyToOne(cascade = CascadeType.REMOVE) 
+1

Eso eliminará la sala cuando se retire alguna reserva, o seguramente lo intentará y podría dar lugar a violaciones de restricciones si la sala está asociada con otras reservas. –

+0

Esto no funcionó ... Sigue recibiendo el error de restricción al intentar eliminar una habitación. – user829237

+0

@Andrei, Los dos estamos equivocados aquí porque la anotación de muchos a uno no tiene la propiedad huérfanoRemoval. :) pero gracias. No presté atención a que era de muchos a uno, pensé que era uno a muchos :) Lo eliminaré más tarde :) +1 en el comentario –

Cuestiones relacionadas