我在后端使用spring-boot,我有这3个实体:
实体AppUser
@Entity
@Data
@AllArgsConstructor @NoArgsConstructor
public class AppUser implements Serializable {
@Id @GeneratedValue
private Long id;
@Column(unique = true)
private String username;
private String password;
private String prenom;
private String nom;
private Long tel;
private String cin;
private String email ;
@ManyToMany(fetch = FetchType.EAGER)
private Collection<AppRole> roles = new ArrayList<>();
@OneToMany(mappedBy = "appUser" )
@Fetch(value = FetchMode.SUBSELECT)
@JsonManagedReference(value="appuser-contrat")
private Collection<Contrat> contrats = new ArrayList<Contrat>();
public void addToContrats(Contrat contrat){
this.contrats.add(contrat);
}
}
实体项目
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Project implements Serializable{
@Id @GeneratedValue
private long id;
private String intitule;
private String description;
@OneToMany(mappedBy = "project" )
@Fetch(value = FetchMode.SUBSELECT)
@JsonManagedReference(value="projet-contrat")
private Collection<Contrat> contrats = new ArrayList<Contrat>();
@OneToMany(mappedBy = "project")
@Fetch(value=FetchMode.SUBSELECT)
@JsonManagedReference(value="projet-intervention")
private Collection<Intervention> interventions = new ArrayList<Intervention>();
public void addToContrats(Contrat contrat){
this.contrats.add(contrat);
}
public void addToIntervention(Intervention intervention) { this.interventions.add(intervention);}
}
实体合同
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Contrat implements Serializable{
@Id @GeneratedValue
private Long id;
private Date dateDebut ;
private Date dateFin ;
@ManyToOne
@JoinColumn(name = "Id_Project")
@JsonBackReference(value="projet-contrat")
private Project project;
@ManyToOne
@JoinColumn(name = "Id_AppUser")
@JsonBackReference(value="appuser-contrat")
private AppUser appUser;
}
这是哲学的规划:
-AppUser可以是管理员或客户端或devlopper,因此我在实体角色中有3个角色:Client,admin,devlopper。
- 管理员可以将项目添加到客户端。 (这是这个简单应用程序的主要作用)
我想要的是当管理员使用方法&#39; addProjectToClient&#39;将项目保存到客户端时在控制器中,管理员还存储Devlopper,后者将管理客户端将对该项目进行的任何干预。
例如,管理员将一个项目添加到客户端,他还选择要保存的devlopper,当客户端在使用此项目时遇到问题时,应用程序将向指定的Devlopper发送通知。
我对干预整体没有任何问题,将项目保存到客户等等,我想知道的是,这个devlopper将会占用这个项目给这个客户(在实体中),因为我只有一个实体并且使用角色。
有什么想法吗?
PS:使用spring-data。