Определение взаимосвязи между сущностями A и B через JPA

Можно выбрать однонаправленную связь OneToOne от A к B, если каждому A соответствует не более одного B и один B не разделяется между несколькими A. Внешний ключ должен быть уникальным.

Короткий ответ

Что ответить на собеседовании

Можно выбрать однонаправленную связь 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.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее