Я создаю две таблицы, используя Spring boot и JPA:
Квартирный стол: id, имя, address_id, веб-сайт
Адресная таблица: id, street_num, улица, город, .....
address_id должен быть внешним ключом и указывать на идентификатор в таблице адресов.
Я не мог заставить свой код работать. Вот мои два класса Entity:
Квартира.java:
@Entity
public class Apartment {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String name;
@OneToOne(cascade = CascadeType.ALL)
@JoinTable(name = "address",
joinColumns = @JoinColumn(name = "apt_id"))
private Address address;
private String website;
//getters and setters
Адрес.java:
@Entity
public class Address {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private Integer apt_id;
private String streetNum;
private String street;
private String city;
private String state;
private String zipCode;
//getters and setters
то, что я получаю, это дополнительный столбец с именем address_id в таблице адресов.... и отсутствующий адрес_id в таблице апартаментов....
Огромное спасибо!






Hibernate сопоставление один к одному с ассоциацией внешнего ключа
В этом типе ассоциации столбец внешнего ключа создается в объекте-владельце. Столбец соединения объявляется с аннотацией @JoinColumn, которая выглядит как аннотация @Column. У него есть еще один параметр с именем referencedColumnName. Этот параметр объявляет столбец в целевом объекте, который будет использоваться для соединения.
Замените свой класс квартиры следующим:
@Entity
public class Apartment {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String name;
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "apt_id"))
private Address address;
private String website;
//getters and setters