Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA继承:MappedSuperclass还是Join?_Java_Oop_Jpa - Fatal编程技术网

Java JPA继承:MappedSuperclass还是Join?

Java JPA继承:MappedSuperclass还是Join?,java,oop,jpa,Java,Oop,Jpa,我有以下情况:一个在线医疗监控系统,它有三种类型的用户(实体):医生、护理者和患者。每个用户都将使用凭据登录,因此我考虑了一个超类User。医生的职责是为患者提供一份药物治疗计划,由护理者帮助管理 用户登录后,应将其重定向到相应页面(取决于其角色) 我应该使用什么类型的JPA继承?我考虑过使用@MappedSuperclass,因为superclassUser与数据库中的其他类(例如MedicalPlan,Drugs)没有关系,只是它的子类。我是否能够以这种方式建模子类之间的多对多关系(例如,一

我有以下情况:一个在线医疗监控系统,它有三种类型的用户(实体):医生护理者患者。每个用户都将使用凭据登录,因此我考虑了一个超类User。医生的职责是为患者提供一份药物治疗计划,由护理者帮助管理

用户登录后,应将其重定向到相应页面(取决于其角色)


我应该使用什么类型的JPA继承?我考虑过使用
@MappedSuperclass
,因为superclassUser与数据库中的其他类(例如MedicalPlanDrugs)没有关系,只是它的子类。我是否能够以这种方式建模子类之间的多对多关系(例如,一名医生被分配给许多患者,而一名患者可能收到了许多医生的医疗计划)?

是的,为什么不能?请注意,在现实生活中,医生有时也需要去看医生,所以他们也可以是患者。或者病人可以去学校当医生。因此,如果您需要对这种实际情况建模,继承不是正确的工具。另外请注意,MappedSuperclass不允许您创建一个LoginAttest实体,其中包含一个用户的manyTone。因此,MappedSuperclass可能也不是正确的解决方案。@jbniset是一个LoginAttest实体,其中包含一个用户,如果用户有多个角色(例如,一个用户既是医生又是护理者),则需要一个用户?因为我不希望以这种方式实现它,我希望每个用户都有一个角色,即使用户只有一个角色,如果3个类从User扩展而来,User不是实体,而是MappedSuperclass,那么您不能与用户有任何关联(例如,LoginAttest),您也不能对User.login有唯一的约束,例如:所有用户将被存储在3个独立的、不相关的表中。@JBNizet啊,好的,我明白了。因此,通过使用MappedSuperclass,我无法获得任何与用户超类相关的内容。考虑到我正在寻找医生和患者之间的多对多关系(因此需要ID列来加入表),最好的选择是什么?让用户成为一个实体。我也会选择默认的继承策略:单表。