Java 2表之间的多重关系,如何通过hibernate设计与数据库映射的类模型

Java 2表之间的多重关系,如何通过hibernate设计与数据库映射的类模型,java,oracle,hibernate,Java,Oracle,Hibernate,我有两个表项目和员工有多重关系。项目有很多员工,员工可以加入多个项目(多对多)。项目有一名员工是团队负责人,一名员工可以管理多个项目(多对一)。那个么我该如何设计数据库,以及类与数据库的模型映射呢。有人帮我吗 这是我的密码 类用户 @Entity(name = "USERS") public class Users { @Id @Column(name = "USER_ID", length = 6) @GeneratedValue(strategy = GenerationType.IDENT

我有两个表项目和员工有多重关系。项目有很多员工,员工可以加入多个项目(多对多)。项目有一名员工是团队负责人,一名员工可以管理多个项目(多对一)。那个么我该如何设计数据库,以及类与数据库的模型映射呢。有人帮我吗 这是我的密码

类用户

@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.....
}
@实体(name=“USERS”)
公共类用户{
@身份证
@列(name=“USER\u ID”,长度=6)
@GeneratedValue(策略=GenerationType.IDENTITY)
私有整数用户标识;
@列(name=“USER\u name”,长度=50,可空=false)
私有字符串用户名;
@列(name=“PASS\u WORD”,长度=50,可空=false)
私有字符串密码;
@列(name=“FULL_name”,长度=50,可空=false)
私有字符串全名;
@列(name=“EMAIL”,长度=50,可空=false)
私人字符串电子邮件;
@列(name=“PHONE”,长度=11,可空=true)
私人电话;
@列(name=“STATUS”,nullable=true)
私有布尔状态;
@ManyToMany(fetch=FetchType.LAZY)
@杰索尼奥雷
@JoinTable(name=“USERPROJECT”,joinColumns={@JoinColumn(name=
“用户ID”)},inverseJoinColumns={
@JoinColumn(name=“PROJECT\u ID”)}
私人清单项目;
@OneToMany(mappedBy=“teamlead”)
TeamLead的私有列表项目;
//准备好。。。。。
}
班级项目

    @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...
    }
@实体(name=“PROJECTS”)
公共类项目{
@身份证
@列(name=“PROJECT\u ID”,长度=6)
@GeneratedValue(策略=GenerationType.IDENTITY)
私有整数投影;
@列(name=“PROJECT\u name”,长度=50,可空=false)
私有字符串projectName;
@列(name=“USER\u CREATE\u ID”,长度=6,可空=false)
私有整数userCreateId;
//@Column(name=“TEAM\u LEAD\u ID”,长度=6,可空=false)
//私有整数teamLeadId;
@列(name=“TIME\u START”,null=true)
私人日期时间启动;
@列(name=“TIME\u END”,null=true)
私人日期时间结束;
@许多(mappedBy=“项目”)
私人名单用户;
@许多酮
@JoinColumn(name=“团队领导ID”)
私人用户团队领导;
//准备好。。。
}

我认为您需要将您的数据库放入3nf(第三范式)。您正在描述一个使用两个表的数据库,但我认为您至少需要三个表,这样您就可以描述什么项目的员工。应使用一个“团队”表,该表使用其他两个表中的PK。按照惯例,您可以将其命名为“ProjectEmployees”,因为它分别由“Projects”表和“Employees”表中的PK组成。我希望这能回答你的问题。如果你不明白我在说什么,我强烈建议你看。

对不起,joakim,但你应该知道我试过设计它,但结果不好,如果你不想帮忙,你可以跳过它,不再说话。我真的觉得读你的评论很烦人。也许你比我更有经验,但别那么傲慢我并不傲慢,但在stackoverflow我们有规则,关于如何提问以及可以问什么,这些规则适用于所有人。阅读帮助部分,你就会明白我的意思。是的,但我认为我没有违反stackoverflow的规则。我只是想知道怎么做。如果我的问题有点混乱或不礼貌,我道歉。。。因为我的英语有点差,你的问题太广泛了,因为你基本上要求从头开始进行数据库设计,另外你还需要hibernate映射和java编程方面的帮助。要使这成为一个合适的问题,您需要将其限制在一个领域,如数据库设计,您需要展示一些基本的努力,包括您迄今为止的设计,并告诉我们您的设计问题。在你这么做之前,你的问题更多的是作为一个请求,而不是一个实际的问题,所以我坚持我最初的评论,那是被删除的,这不是一个免费的代码编写服务。我了解很多人,但除此之外,他们有一对一的关系,我对这种关系很困惑,因为语言障碍,我不能完全确定你在问我什么。声明定量关系的方式(如一对多)取决于所使用的DBMS,如SSMS或MySQL Workbench,甚至transact。。关于你想具体完成什么,你几乎没有给出什么信息。展示你当前的尝试,并举例说明你想在问题中做什么,这样我才能更好地帮助你。如果你在理解某件事情时遇到困难,请准确描述你的理解在哪里出现了分歧。我很乐意帮助你,我只需要多一点信息。我编辑了我的问题。我配置hibernate自动创建数据库我认为表用户_项目应该具有列角色,但hibernate无法与数据库映射