2011-10-05 31 views
8

Tôi có một bản đồ nhiều người khi đặt trước. Đặt phòng phải thuộc về một phòng. Và một phòng có thể có một số đặt phòng.Hibernate 3 Khi xóa thác

Nếu một phòng bị xóa, tôi muốn tất cả các đặt phòng trên căn phòng đó cũng sẽ bị xóa. Làm cách nào để tôi thực hiện việc này bằng chú thích ngủ đông?

@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; 
... 
} 

Trả lời

10

Trong thực Room của bạn, bạn có thể có một

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

Tôi không có một danh sách đặt trong tổ chức phòng của tôi. Và nếu có thể tôi muốn giữ nó theo cách đó. Có cách nào để làm điều này mà không giới thiệu đặt phòng vào phòng? – user829237

+0

Không. Tuy nhiên, việc bổ sung chi phí sẽ không có gì (mặc định sẽ bị lười) – Bozho

3

Sử dụng

@ManyToOne(cascade = CascadeType.REMOVE) 
+1

Điều đó sẽ xóa phòng khi một số đặt phòng bị xóa hoặc chắc chắn sẽ cố gắng và có thể dẫn đến vi phạm ràng buộc nếu phòng được liên kết với các đặt phòng khác. –

+0

Điều này không hoạt động ... Vẫn gặp lỗi khi cố gắng xóa một phòng. – user829237

+0

@Andrei, Cả hai chúng tôi đều sai ở đây vì chú thích nhiều người không có thuộc tính orphanRemoval. :) nhưng cảm ơn bạn. Tôi đã không chú ý rằng đó là Nhiều-một-Tôi nghĩ rằng đó là một-to-nhiều :) Tôi sẽ xóa nó sau này :) 1 trên bình luận –

Các vấn đề liên quan