确保完全不相交的专业化MySQL / JPA

时间:2015-12-26 12:23:53

标签: mysql jpa specialization

我需要确保一个实体专门针对一个实体。

例如,我有一个可以是学生或教师的人。必须是其中之一,不能两者兼而有之。我希望与一个学生或教师相关联的人。

我正在使用MySQL和JPA。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

如果有人是学生或教师,不能同时兼任教师,反之亦然,您可以使用继承:

@Entity
public abstract class Person {
    ...
}

@Entity
public class Student extends Person {
}

@Entity
public class Teacher extends Person {
}

如果学生和教师更倾向于角色,一个人可以避开,而一个人一次只能拥有一个角色(但可以改变角色),请使用属性。例如:

public enum Role {
    TEACHER,
    STUDENT
}

@Entity
public class Person {
    private Role role;
    ...
}
相关问题