SPRING-SOURCE.RU

Ассоциация один-к-одному

Spring OneToOne

Когда один объект ссылается на другой объект и когда этот второй объект не является компонентом. Если хочется сделать чтобы каждый объект сохранялся в свою таблицу, а не в одну. Есть один объект, есть второй и между ними связь один-к-одному.

Здесь используем аннотацию @OneToOne.

Здесь есть свои хитрости. Как сделать связь один-к-одному? У нас есть одна таблица и вторая. Как связать два ряда этих таблиц один-к-одному?

Есть две стратегии:

  1. Связывание по первичному ключу. Первичный ключ в одном объекте соответствует первичному ключу в другом объекте. Это сложная ассоциация и управлять ею тоже не просто.
    @OneToOne
    @PrimaryKeyJoinColumn
  2. Проще сделать, если мы в одной из таблиц создадим foreign key на другой первичный ключ. С точки зрения базы данных мы сделаем связь многие-к-одному, но с точки зрения объктов это будет один-к-одному.
    @OneToOne
    @JoinColumn(name = 'STAT_ID')
    То есть в таблице Item (имя класса) создатся колонка STAT_ID, который будет ссылаться на Primary Key другого класса - таблицы. Можно еще через @JoinTable, но лучше без него.