Атрибут mappedBy можно использовать, когда отношение уже определено в другой части.
Например, в отношениях один к одному между сущностями А и В:
@Entity
public class A {
@OneToOne
@JoinColumn
private B b;
// Code removed for clarity
}
Здесь мой класс A определяет отношение к B. Это отношение «один к одному» с использованием столбца соединения. Если я хочу, чтобы B связывался с A, используя эту уже определенную связь, чтобы установить двунаправленную связь между моими сущностями, я могу использовать атрибут mappedBy:
@Entity
public class B {
@OneToOne(mappedBy="b")
private A a;
// Code removed for clarity
}
Здесь атрибут mappedBy означает «Я хочу определить отношение« один к одному », которое уже было определено для объекта A, для атрибута с именем« b »».
Как правило, владельцем двунаправленной связи является сущность, сопоставленная с таблицей, содержащей столбец соединения, ссылающийся на другую таблицу. Если вы используете объединяющую таблицу, любая сторона может быть стороной-владельцем, это должно иметь смысл в вашей модели данных.