如何注释抽象类实例的组合?

时间:2015-03-25 02:23:38

标签: java hibernate jpa persistence hibernate-mapping

我的设计为Person,如下图所示。设计是允许一个人将他的角色从Staff更改为StudentStudent更改为Faculty,依此类推。

我想使用hibernate注释将此系统持久化到DB。有谁知道怎么做?

非常感谢!

enter image description here

1 个答案:

答案 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集合,这里就不是一个选项。