2013-04-01 95 views
8

我使用Spring Data,JPA,Hibernate和MySQL。我在事件和类别之间有一对多的关系。显然,一个事件只能有一个类别,一个类别可以分配多个事件。当我尝试删除类别时出现问题,如果任何事件持有此类别的外键,则出现错误。我想在删除类别时将Event表中的外键设置为null。目前,我通过在代码中明确设置外键来更新所有事件,在删除类别之前将其更新为空。有没有使用注释的方法?JPA一对多删除并将foregn键设置为空

这是我的分类:

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

和事件类:

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

我见过的主题是讨论过很多次,但我还没有看到任何解决方案。

回答