首页 > 解决方案 > 在表之间有@ManyToOne 链接时如何创建对象

问题描述

我有 2 个班级 - 个人和团队。一个人只能在一个团队中,但一个团队可以有很多人(人员对象)。问题是 Person 和 Team 都需要其他类对象来创建自己。

课程:

@Entity
@Table(name = "Team")
public class Team {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", nullable = false)
    private int id;

    @Column(name = "teamName", nullable = false)
    private String teamName;

    @OneToMany(mappedBy = "myTeam", fetch = FetchType.LAZY)
    private Set <Person> setOfMembers = new HashSet<Person>();

    public Team(int id, String teamName, Set <Person> setOfMembers) {
            //usual code (don't want to waste so much space)
    }
    ... other irrelevant fields ...
}

@Entity
@Table(name = "Person")
public class Person{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID", nullable = false)
    private int id;

    @Column(name = "teamID", nullable = false)
    private int teamID;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "teamID", referencedColumnName = "id")
    private Team myTeam;

    public Person(int id, int teamID, Team myTeam) {
        //usual code
    }
    ... other irrelevant fields ...
}

现在在主文件中,我正在尝试创建一个新对象:

Team t1 = new Team(1,"Nights Watch", <and here i need Person Object, so i 
do something as follows:> new Person(1,1, <and here i need Team object>));

所以它会反复出现,没有尽头。我想向数据库中添加一些记录,但我不知道如何。

实际上我需要一组人对象,但我仍然不知道如何

标签: javadatabasehibernatejpamapping

解决方案


为什么在Team班级初始化期间需要所有队友?

只需做一个不带Person参数的构造函数,然后执行如下方法:

public void addTeamMember(Person person) {
   setOfMembers.add(person);
}

然后,您可以创建Team、创建Person并最后将人员添加到团队中。


推荐阅读