Можно выбрать однонаправленную связь OneToOne от A к B, если каждому A соответствует не более одного B и один B не разделяется между несколькими A. Внешний ключ должен быть уникальным.
Определение взаимосвязи между сущностями A и B через JPA
Можно выбрать однонаправленную связь OneToOne от A к B, если каждому A соответствует не более одного B и один B не разделяется между несколькими A. Внешний ключ должен быть уникальным.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Даны две сущности A и B. Требуется задать одну из возможных ассоциаций между ними, используя JPA‑аннотации.
@Entity
class A {
@Id Long id;
// здесь следует указать связь с B
}
@Entity
class B {
@Id Long id;
}
Ответ
Можно выбрать однонаправленную связь OneToOne от A к B, если каждому A соответствует не более одного B и один B не разделяется между несколькими A. Внешний ключ должен быть уникальным.
В A:
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "b_id", unique = true)
private B b;
Unique выражает ограничение выбранной модели; оно должно существовать и в реальной БД, а не только в аннотации. Lazy для to-one является подсказкой провайдеру и не универсальной гарантией без дополнительной настройки. Связь пока необязательная; обязательность требует optional=false/nullable=false. Если один B должен обслуживать много A, правильнее ManyToOne без unique.