我如何使用JPA表示这一点?

时间:2010-02-02 16:16:13

标签: jpa

我想要一个'RolesPlayed'实体,其中包含以下列

  • 用户
  • 角色
  • 部门/项目/组

上面的所有三列构成了一个复合主键。我想知道是否可以将列定义为部门/项目/组之一?如果有,怎么样?或者我是否需要将实体分解为DepartmentRoles,GroupRoles和ProjectRoles。

感谢。

1 个答案:

答案 0 :(得分:0)

您可以将多态性与抽象基类一起使用。

@Entity
public class RolePlayed {

    @ManyToOne
    private User user;

    @ManyToOne
    private Role role;

    @ManyToOne
    private Body body;

    ...

}

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

@Entity
public class Department extends Body {
    ...
}

@Entity
public class Project extends Body {
    ...
}

@Entity
public class Group extends Body {
    ...
}

查看Polymorphism section in the Java Enterprise tutorial以获得更好的概述。

或者,您也可以使用RolePlayedDepartmentRoleGroupRole实现制作ProjectRole实体摘要。