我有4件东西可以连接和存储,但是我不确定如何使用注释来强制约束。所以这是场景:
我有一个项目,经理,参与者和角色。这是四个实体,也可以是三个,因为经理也是参与者。该角色具有不同的角色,例如经理,参与者,pointOfContact,项目负责人等。我不确定是否需要一个角色,但是是的,有多个角色。
现在是约束:
1)项目只能支持具有所有者角色的SINGLE人。
2)只有现有所有者或PowerUser,Admin可以更改项目的所有者。
3)将所有权从用户X转移到用户Y会自动将用户X添加为参与者。
4)可以将任意数量的参与者添加到项目中。
5)一个或多个角色可以与一个人相关联。
我不确定如何使用JPA设计它。我已经尝试过了:
@Entity
@Table(name = "PROJECT")
public final class PROJECT {
/**
* The Serialization id.
*/
private static final long serialVersionUID = 1L;
@ManyToOne(cascade = CascadeType.PERSIST)
@JoinTable(name = "OWNER_PROJECT_REL",
joinColumns = @JoinColumn(name = "PROJECT_ID"),
inverseJoinColumns = @JoinColumn(name = "OWNER_ID")
)
private SomeDTO owner;
@ManyToMany(cascade = CascadeType.PERSIST)
@JoinTable(name = "PARTICIPANT_PROJECT_REL",
joinColumns = @JoinColumn(name = "PROJECT_ID"),
inverseJoinColumns = @JoinColumn(name = "PARTICIPANT_ID")
)
private List<Participant> participants = new ArrayList<>();
但是,这里我将所有者和参与者设为两个不同的Java类。我不确定这是不是一个好的设计。
我应该只参加一个参与者课程,并将所有者视为参与者吗?
哪里适合角色表?
考虑到空间不是问题,我应该使用多少张表?
由于我还很陌生,如何用JPA编写该东西?
谢谢!