Spring JPA Несколько отношений «многие к одному» в одном объекте - PullRequest
0 голосов
/ 03 ноября 2018

Я пытаюсь создать объект, Пользователь, который имеет два адреса, домашний адрес и рабочий адрес.

Вместо того, чтобы хранить информацию об адресе непосредственно в классе User, я хочу нормализовать ее и сохранить все адреса в одной таблице, а затем связать их с пользователем. Вот так:

@Entity
public class User {

    @Id
    private Integer id;
    private Address homeAddress;
    private Address workAddress;

    // getters and setters
}

@Entity
public class Address {

    @Id
    @GeneratedValue (strategy = GenerationType.AUTO)
    private Integer id;
    private String streetNumberAndName;
    private String apartmentOrSuiteNumber;
    private String city;
    private String state;
    private String zipcode;

    // getters and setters
}

Как мне сделать это с помощью Spring JPA? Я понимаю, что это отношение ManyToOne, но я не уверен, как сопоставить два отношения ManyToOne одному объекту. Это вообще возможно?

Любая помощь высоко ценится.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 03 ноября 2018

Это действительно просто. Просто сопоставьте свой пользовательский класс как:

@Entity
public class User {

    @Id
    private Integer id;

    @ManyToOne
    @JoinColumn(name = "fk_home_address")
    private Address homeAddress;

    @ManyToOne
    @JoinColumn(name = "fk_work_address")
    private Address workAddress;

    // getters and setters
}

Структура таблицы будет выглядеть следующим образом:

user(id, fk_home_address, fk_work_address)

Обратите внимание, что это однонаправленное отношение.

Лучшее место для поиска примеров, если вы хотите узнать больше, это здесь . Если вы ищете двунаправленное отношение, изучите здесь .

0 голосов
/ 03 ноября 2018
private Integer id;
private Address homeAddress;
private Address workAddress;

в первой ситуации ваша структурная таблица будет

user(id,home_address_id,work_address_id)

Вы можете рассмотреть вопрос о второй структуре

private Integer id;
private List<Address> userddress;//using one to many

ваша структура таблицы будет

address(id,user_id)

Зависит от того, как вы хотите организовать структуру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...