如何避免删除不需要的记录?

时间:2013-10-10 01:45:32

标签: java hibernate java-ee hibernate-mapping

在我的应用程序中,用户可以拥有一个收藏列表。最喜欢的列表可以有多种球。问题是,当我尝试删除User表(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;

   ...
}

2 个答案:

答案 0 :(得分:1)

@OneToOne(cascade = CascadeType.ALL)

这应该是问题,如果你是“全部级联”,一切:“保存,删除,更新,逐出,锁定,复制,合并,持久”将级联到与此相关的所有对象。

我没有使用过hibernate或jpa一段时间,所以我不记得你需要什么,但这应该有助于选择,你想要什么或者你不想要级联:hibernate javadoc

答案 1 :(得分:1)

肯定你有其他的列表可以保留球,因为没有为@ManyToOne定义的Ball级联。