2017-04-05 106 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