2012-11-23 34 views
1

我试图设计我的实体类别使用JPA注释如何在JPA中拥有一个父实体和许多类实体?

我所试图做的是如下:


ID的用户表, ***电子邮件, 密码, activation_key, 活跃, ***作用

和许多类型的用户表与例如。
STUDENT_TABLE
USER_ID 名字 姓氏 公司 地址 等

MENTOR
USER_ID 姓 姓氏 DOB 部 等

当用户将根据登记o他们的角色,他们将被分为两张表(USER,MENTOR/STUDENT)

当他们登录时,ManagedBean会查看UESR表来验证身份验证。

我厌倦了使用@OneToOne,但它只适用于两张桌子。

我真的很感激,如果有任何1可以帮助!

感谢

回答

3

如果我理解正确的,你想要的是一种继承关系:

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

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

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

接合的战略告诉JPA的是,在用户类中的字段存储在表(USER)并且每个子类在其自己的表(STUDENT和MENTOR)中保留其自己的字段,并使用用于引用USER表ID的连接列。

+0

这真的很棒,非常感谢你。那么我将在每个子类中访问USER表中的数据? – user1847624

+0

我是否需要将@DiscriminatorColumn放在任何位置?如果在哪里?谢谢 – user1847624

+0

我认为这取决于你的JPA实现。 Hibernate不需要任何鉴别器列。如果您的引擎需要一个,那么注释必须放在User类中,如[javadoc](http://docs.oracle.com/javaee/6/api/javax/persistence/DiscriminatorColumn.html)中所述。 –

相关问题