2017-04-05 151 views
0

我;从Hibernate开始。我有一个简单的问题。 我想在JSF2中做一个应用程序,该应用程序应该模仿简单的足球统计门户。有几个实体:......俱乐部和球员。 我想要做的beetween俱乐部和球员的关系: 俱乐部:休眠 - oneToMany或只嵌入

@OneToMany(mappedBy = "playersClub", 
     orphanRemoval = true 
) 
@Cascade({CascadeType.ALL}) 
@ContainedIn 
private Set<Player> players; 

和球员:

@ManyToOne 
//  (
//   fetch = FetchType.EAGER 
// ) 
    @Cascade({org.hibernate.annotations.CascadeType.ALL}) 
    @IndexedEmbedded(depth = 1) 
    private Club playersClub; 

我的问题是,当我想到这个程序有一个想法:当1个俱乐部有前例。 20名球员和用户将删除所有俱乐部应该仍然在应用程序,但是当用户想要删除俱乐部 - 那么该俱乐部的所有球员也应该删除(或用户会看到警报 - 有xx球员 - 做你想要删除它们) 我应该在Club中使用ManyToOne/OneToMany还是Embedded Player?

+0

我的意思是我不能选择匹配的注释去做,当我想删除俱乐部,那么所有的球员应该从数据库中自动删除。 – proceder

回答

0

当你建模你认为实体:球员是一个“强大”的实体(可以不存在俱乐部的球员),因此,你应该使用ManyToOne/OneToMany,因为这代表你的模型。而在您的业务逻辑中,您可以决定在删除俱乐部时您将要删除球员的天气,或者让球员无需俱乐部。这种建模方式也使您可以轻松更改删除逻辑。

+0

不,不。相反,俱乐部可以存在没有球员。在这种情况下,我的关系可以吗? – proceder