Создание таблиц с помощью JPA

Я создаю две таблицы, используя 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 в таблице апартаментов....

Огромное спасибо!

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
0
30
1

Ответы 1

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

Другие вопросы по теме