我正在使用 Hibernate 的 JPA 实现。我有一个包含不同类型用户(私人|公共等)的用户表,user_type 列指定用户的类型。
我有一个用户类,它是一个代表用户表的实体。我添加了
@DiscriminatorColumn(name="user_type", discriminatorType=DiscriminatorType.STRING)
在我的用户类上创建了 2 个类,PrivateUser 和 PublicUser,每个类都使用相应的 @DiscriminatorValue 扩展用户类。
我还有 PrivateCompany 和 PublicCompany 表,它们分别使用用户表中名为 company_id 的列具有一对多关系 PrivateUser 实体和 PublicUser 实体。我在两个 OneToMany 关系上也有级联删除。
现在,如果我有一个 ID 为 10 的 PrivateCompany 和一个 ID 为 10 的 PublicCompany ,并且 PrivateCompany 和 PublicCompany 的用户表中的用户条目如下所示。
user_id | company_id | user_type
100 10 private
101 10 public
如果我删除 PrivateCompany,我最终会删除用户 101 和 100,因为 company_id 上的 OneToMany 关系并且它不考虑 user_type 列,尽管它被提及为 DiscriminatorColumn。我正在寻找一种方法来提供级联删除功能,该功能在删除子项时考虑 DiscriminatorColumn。我尝试创建具有多个列的 JoinColumns,但我可以创建与列名而不是列值的关系(这是我的情况)。
如果我的解释不清楚,请告诉我。
提前致谢