如何在JPA中拥有一个父实体和多种类型的子实体?

如何在JPA中拥有一个父实体和多种类型的子实体?,jpa,entity,Jpa,Entity,我正在尝试使用JPA注释设计我的实体类 我想做的是: 具有 身份证件 ***电子邮件, 暗语 激活密钥, 忙碌的 角色*** 和许多类型的用户表,例如。 学生桌 用户ID 名字 姓氏 公司 住址 等 导师 用户ID 名字 姓氏 出生日期 部门 等 当用户根据其角色进行注册时,他们将被分为两个表:用户、导师/学生 当他们登录时,ManagedBean将查看UESR表以验证身份验证 我很想使用@OneToOne,但它只适用于两张桌子 如果有人能帮忙,我将不胜感激 谢谢如果我理解正确,您需要的是继承关

我正在尝试使用JPA注释设计我的实体类

我想做的是:

具有 身份证件 ***电子邮件, 暗语 激活密钥, 忙碌的 角色***

和许多类型的用户表,例如。 学生桌 用户ID 名字 姓氏 公司 住址 等

导师 用户ID 名字 姓氏 出生日期 部门 等

当用户根据其角色进行注册时,他们将被分为两个表:用户、导师/学生

当他们登录时,ManagedBean将查看UESR表以验证身份验证

我很想使用@OneToOne,但它只适用于两张桌子

如果有人能帮忙,我将不胜感激


谢谢

如果我理解正确,您需要的是继承关系:

@Entity
@Inheritance(strategy = JOINED)
public abstract class User { ... }

@Entity
public class Student extends User { ... }

@Entity
public class Mentor extends User { ... }

join策略告诉JPA,用户类中的字段存储在一个表User中,每个子类在自己的表STUDENT和MENTOR中保留自己的字段,并使用一个join列引用用户表ID。

这真是太棒了,非常感谢。所以我将要在用户表中保存的数据可以从每个子类中访问?我需要将@DiscriminatorColumn放在任何地方吗?如果在哪里?谢谢,我认为这取决于您的JPA实现。Hibernate不需要任何鉴别器列。如果您的引擎需要注释,则必须将注释放在用户类上,如中所述