2013-04-01 28 views
8

Tôi sử dụng Dữ liệu Spring, JPA, Hibernate và MySQL. Tôi có một đến nhiều mối quan hệ giữa Sự kiện và Danh mục. Rõ ràng một sự kiện chỉ có thể có một danh mục và một danh mục có thể được gán nhiều Sự kiện. Sự cố xuất hiện khi tôi cố xóa Danh mục, nếu bất kỳ sự kiện nào có khóa ngoại của danh mục này thì tôi sẽ gặp lỗi. Tôi muốn thiết lập khóa ngoại trong bảng Event để null khi một Category bị xóa. Tại thời điểm này tôi cập nhật tất cả các sự kiện bằng cách đặt khóa ngoại trong mã bằng cách cập nhật nó thành null trước khi xóa Danh mục. Có cách nào để thực hiện việc sử dụng chú thích không?JPA xóa một lần và đặt khóa foregn thành null

Đây là loại của tôi:

@Entity 
    @Table(name = "category") 
    public class Category implements Serializable{ 
    @OneToMany(mappedBy="category", targetEntity=Event.class, fetch=FetchType.LAZY, cascade= 
{CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}) 

    public Set<Event> getEvents_category() { 
    return events_category; 
    } 
    } 

Và các lớp tổ chức sự kiện:

@Entity 
    @Table(name = "event") 
    public class Event implements Serializable{ 

    @ManyToOne(cascade={CascadeType.DETACH, CascadeType.MERGE, CascadeType.PERSIST, 
CascadeType.REFRESH}) 
    @JoinColumn(name="events_dancestyle") 
    public DanceStyle getDanceStyle() { 
    return danceStyle; 
    } 
    } 

I have seen that chủ đề đã được thảo luận nhiều lần nhưng tôi đã không nhìn thấy bất kỳ giải pháp cho điều đó.

Trả lời

5

Rất tiếc, hiện tại bạn không thể thực hiện việc này bằng chú thích JPA/Hibernate. Xem các câu hỏi liên quan:

Have JPA/Hibernate to replicate the "ON DELETE SET NULL" functionality

On delete set null in hibernate in @OneToMany

+0

Hi David, Cảm ơn câu trả lời của bạn. Câu trả lời của bạn vừa xác nhận rằng tôi đã đúng. Tôi đã sử dụng chính xác cách tiếp cận tương tự như trong các liên kết bạn đã cung cấp. – Lukasz

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