Как я могу создать объект при наличии @ManyToOne ссылки между таблицами - PullRequest
1 голос
/ 29 мая 2019

У меня 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>));

так что оно идет периодически, без конца.Я хочу добавить некоторые записи в базу данных, но я не знаю, как.

На самом деле мне нужен там набор объектов Person, но, тем не менее, я не знаю, как

1 Ответ

1 голос
/ 29 мая 2019

Зачем вам нужны все ваши товарищи по команде во время инициализации класса Team?

Просто создайте конструктор без аргумента Person, а затем выполните метод, подобный:

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

Затем вы можете создать Team, создать Person и, наконец, добавить человека в команду.

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