如何在指定的情况下编写实体?

时间:2018-06-03 14:05:22

标签: spring spring-boot spring-data

我在后端使用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。

0 个答案:

没有答案
相关问题