我的设计为Person
,如下图所示。设计是允许一个人将他的角色从Staff
更改为Student
,Student
更改为Faculty
,依此类推。
我想使用hibernate注释将此系统持久化到DB。有谁知道怎么做?
非常感谢!
答案 0 :(得分:0)
因此,您在Entity Persona和抽象实体Person Role之间存在1:N关系。认为这可能适合你。
@Entity
public class Person {
// Here you have all roles in some collection.
@OneToMany(mappedBy="person", fetch=FetchType.LAZY)
private List<PersonRole> roles;
...
}
@Entity
public abstract class PersonRole {
@ManyToOne
@JoinColumn(name="PERSON_ID")
private Person person;
...
}
@Entity
public class Staff extends PersonRole {
...
}
也不要忘记设置正确的
@Inheritance(strategy=InheritanceType.<strategy>)
定义类模型如何映射到关系模型。
编辑:不幸的是@MappedSuperclass不能在关系映射中使用,所以只要你想在Person实体中拥有PersonRole集合,这里就不是一个选项。