Как работает @JoinColumn

220
14 октября 2021, 13:00

Видел много примеров, но все еще не совсем понимаю, в каких случаях пишется эта аннотация. Вот допустим у нас сущности User и Book, между ними отношения OneToMany в User и ManyToOne в Books соответственно. Так вот, я прочитал, что @JoinColumn использует та сущность, которая в этих отношениях является "главной", а та сущность, которая не несет ответственности, помечается как mappedBy.

Допустим у нас есть два класс-сущности:

@Entity
@Table (name="users")
public class Person
{
    private String name;
    @OneToOne (optional=false, cascade=CascadeType.ALL)
    @JoinColumn (name="passport_id")
    private Passport passport;
}
@Entity
@Table (name="passports")
public class Passport
{
    private String series;
    private String number;
    @OneToOne (optional=false, mappedBy="passport")
    private Person owner;
}

Этот пример я увидел в одной статье. Какой из этих классов является главным, по отношению к другому? И что вообще значит главный?

READ ALSO
Как сделать из строки численное выражение? [дубликат]

Как сделать из строки численное выражение? [дубликат]

Пишу калькулятор, в который можно вбивать математические выражения любой длины, после чего пользователь нажимает клавишу "=" и калькулятор...

97
Адаптивная верстка DIV [закрыт]

Адаптивная верстка DIV [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

228