我正在使用Hibernate的JPA實現。我有一個不同類型的用戶(私人|公共等..)的用戶表,user_type列指定用戶的類型。Hibernate JPA級聯刪除與DiscriminatorColumn
我有一個User類,它是一個表示用戶表的實體。我在我的用戶類添加
@DiscriminatorColumn(name="user_type", discriminatorType=DiscriminatorType.STRING)
和創建的2類,PrivateUser和PublicUser各自延伸用戶類具有對應@DiscriminatorValue它們。
我還有PrivateCompany和PublicCompany表,它們在用戶表中分別使用一個名爲company_id的列具有一對多關係PrivateUser實體和PublicUser實體。我也有兩個OneToMany關係級聯刪除。
現在,如果我有一個PrivateCompany ID爲10,PublicCompany ID爲10,並且userCompany和PublicCompany的用戶表中的用戶條目如下所示。
user_id | company_id | user_type
100 10 private
101 10 public
如果我刪除PrivateCompany,我結束了刪除用戶101與100一起,因爲在COMPANY_ID和一對多的關係並不儘管它提到作爲DiscriminatorColumn考慮USER_TYPE列。我正在尋找一種方法來提供級聯刪除功能,該功能在刪除子級時處理DiscriminatorColumn。我試圖創建具有多列的JoinColumns,但我可以創建與列名稱但不是列值(這是我的情況)的關係。
如果我的解釋不清楚,請讓我知道。
在此先感謝
安德烈,感謝您的答覆,我有PrivateUser和PublicUser的集合。我可以手動處理它,但我正在尋找一個級聯解決方案,將user_type考慮在內,如果刪除PrivateCompany,並且反之亦然,則只刪除privateUsers。我只想確認在實施手動解決方案之前,Hibernate/JPA無法做到這一點 –