множественные отношения между двумя таблицами, как спроектировать модель классов, которая сопоставляется с базой данных с помощью Hibernate - PullRequest
0 голосов
/ 26 декабря 2018

У меня есть 2 таблицы проекта и сотрудник имеет несколько отношений.Проект имеет много сотрудников, сотрудник может присоединиться ко многим проектам (многие ко многим).В проекте есть один сотрудник, который является руководителем группы. Сотрудник может управлять многими проектами (от многих к одному).Итак, как я проектирую базу данных и сопоставляю модель классов с базой данных.Кто-нибудь, помогите мне Это мой код

класс пользователя

@Entity(name = "USERS")
public class Users {
@Id
@Column(name = "USER_ID", length = 6)
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer userId;
@Column(name = "USER_NAME", length = 50, nullable = false)
private String userName;
@Column(name = "PASS_WORD", length = 50, nullable = false)
private String passWord;
@Column(name = "FULL_NAME", length = 50, nullable = false)
private String fullName;
@Column(name = "EMAIL", length = 50, nullable = false)
private String email;
@Column(name = "PHONE", length = 11, nullable = true)
private String phone;
@Column(name = "STATUS", nullable = true)
private Boolean status;
@ManyToMany(fetch = FetchType.LAZY)
@JsonIgnore
@JoinTable(name = "USERPROJECT", joinColumns = { @JoinColumn(name = 
 "USER_ID") }, inverseJoinColumns = {
        @JoinColumn(name = "PROJECT_ID") })
private List<Project> projects;
@OneToMany(mappedBy = "teamlead")
private List<Project> projectOfTeamLead;
//get set.....
}

класс проекта

    @Entity(name = "PROJECTS")
    public class Project {
    @Id
    @Column(name = "PROJECT_ID", length = 6)
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer projectId;
    @Column(name = "PROJECT_NAME", length = 50, nullable=false)
    private String projectName;
    @Column(name = "USER_CREATE_ID", length = 6, nullable=false)
    private Integer userCreateId;
    //  @Column(name = "TEAM_LEAD_ID", length = 6, nullable=false)
    //  private Integer teamLeadId;
    @Column(name = "TIME_START", nullable=true)
    private Date timeStart;
    @Column(name = "TIME_END", nullable=true)
    private Date timeEnd;
    @ManyToMany(mappedBy = "projects")
    private List<Users> users;
    @ManyToOne
    @JoinColumn(name = "TEAM_LEAD_ID")
    private Users teamlead;
    //get set...
    }

1 Ответ

0 голосов
/ 26 декабря 2018

Я думаю, вам нужно привести вашу базу данных в соответствие с 3nf (третья нормальная форма).Вы описываете базу данных, которая использует две таблицы, но я думаю, что вам нужно как минимум три, чтобы вы могли описать, какие сотрудники в каком проекте.Следует использовать таблицу «team», в которой используются PK из двух других таблиц.Традиционно, вы бы назвали это как «ProjectEmployees», так как оно состоит из PK из таблицы «Projects» и «Employees» соответственно.Я надеюсь, что это отвечает на ваш вопрос.Если вы не понимаете, о чем я говорю, я настоятельно рекомендую вам посмотреть это .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...