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

我如何使用JPA表示这一点?,jpa,Jpa,我想要一个具有以下列的“角色展示”实体 使用者 角色 部门/项目/小组 以上所有三列构成一个复合主键。我想知道是否可以将列定义为部门/项目/组?如果是,如何进行?或者我需要将实体分为部门角色、组角色和项目角色 谢谢。您可以将多态性与抽象基类一起使用 @Entity public class RolePlayed { @ManyToOne private User user; @ManyToOne private Role role; @ManyToO

我想要一个具有以下列的“角色展示”实体

使用者 角色 部门/项目/小组 以上所有三列构成一个复合主键。我想知道是否可以将列定义为部门/项目/组?如果是,如何进行?或者我需要将实体分为部门角色、组角色和项目角色


谢谢。

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

@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 {
    ...
}
查看以获得良好的概述


或者,您也可以使用DepartmentRole、GroupRole和ProjectRole实现将角色扮演实体抽象化。

您可以使用多态性和抽象基类来实现这一点

@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 {
    ...
}
查看以获得良好的概述

或者,您也可以使用DepartmentRole、GroupRole和ProjectRole实现将RolePlayed实体抽象化