2013-10-10 35 views
0

在我的應用程序中,用戶可以擁有一個收藏夾列表。最喜愛的名單可以有許多種球。問題是,當我嘗試刪除用戶表(session.delete(用戶))的記錄時,它刪除了添加到該用戶的收藏列表中的所有球的記錄如何避免刪除不需要的記錄?

但是,它應該刪除用戶,用戶的喜愛列表中選擇記錄,而最喜歡的列表favoriteItems,而不是從球桌

關係的任何記錄

Each User must have only one FavoritesList 
Each FavoritesList may have zero to many FavoriteItems 
Each FavoriteItems must have only one ball 
Each ball can be belong to zero to many FavoriteItems 

@Entity 
public class User{ 
    .... 
    @OneToOne(cascade = CascadeType.ALL) 
    protected FavoritesList favoritesList; 

    public User{ 
    ... 
    this.favoritesList = new FavoritesList(); 
    } 

    .... 
} 

@Entity  
public class FavoritesList { 

    ... 
    @OneToMany 
    @LazyCollection(LazyCollectionOption.FALSE) 
    private List<FavoriteItems> items; 


    public FavoritesList(){ 
    this.items = new ArrayList(); 
    } 
    ... 
} 

@Entity 
public class FavoriteItems { 
    ... 
    @ManyToOne 
    private Ball ball; 

    ... 
} 

回答

1

爲確保您有其他列表,保持球,因爲沒有爲@ManyToOne在Ball上定義的級聯。

1
@OneToOne(cascade = CascadeType.ALL) 

這應該是問題,如果你是「級聯所有」,一切:「保存,刪除,更新,驅逐,鎖定,複製,合併,堅持」級聯到相關的所有對象這個。

我還沒有使用休眠或JPA一段時間,所以我不記得你需要的究竟是什麼,但是這應該幫助選擇,你想要什麼,或者你不想級聯什麼:hibernate javadoc

+0

但正如我已經解釋,我需要它來刪除favouritelist和favoriteitems,也許如果我拿出級聯它不會刪除它們。 – J888