2011-10-05 14 views
8

私は予約時に多対1のマッピングを持っています。 予約は客室に属している必要があります。部屋には複数の予約があります。Hibernate 3削除カスケード時

部屋が削除された場合、その部屋のすべての予約を削除したいと思います。 hibernateアノテーションを使用してこれを行うにはどうすればいいですか?あなたのRoomエンティティで

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

答えて

10

あなたは

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

私は私の部屋のエンティティでの予約のリストを持っていないを持つことができます。可能であれば、私はそれをそのままにしておきたいと思います。予約を部屋に導入せずにこれを行う方法はありますか? – user829237

+0

いいえ、コレクションの追加には何も必要ありません(デフォルトでは怠け者になります) – Bozho

3

使用

@ManyToOne(cascade = CascadeType.REMOVE) 
+1

一部の予約が削除された場合、その部屋が削除されるか、部屋が他の予約と関連付けられている場合は必ず試行され、制約違反が発生する可能性があります。 –

+0

これはうまくいかなかった...部屋を削除しようとしても、依然として制約エラーが発生する。 – user829237

+0

@Andrei、多対1の注釈にはorphanRemovalプロパティがないので、両方とも間違っています。 :) でもありがとう。私はそれが多対1であることに注意を払っていませんでした私はそれが1対多であると思った:)後でそれを削除します:) +1でコメント –

関連する問題