Поле карты гибернации сущности как внешний ключ для нескольких сущностей - PullRequest
0 голосов
/ 25 февраля 2019

Я хочу сохранить адрес сущностей Пользователь и Сотрудник в сущности Адрес.Как мне создать свой адрес, чтобы я мог сохранить как адрес пользователя, так и сотрудника.

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019
  1. Создание абстрактного базового класса Person с Address Entity в качестве члена.
  2. Расширение класса Person в подклассах User и Employee.

    @MappedSuperclass
    abstract class Person {
        @ManyToOne @JoinColumn(name="ADDRESS")
        protected Address address;
    }
    
    @Entity
    class Employee extends Person {}
    
    @Entity
    class User extends Person {}
0 голосов
/ 25 февраля 2019

У вас есть два варианта, один из которых - сделать встраиваемую адресную сущность,

@Embeddable
public class Address {
   ....
}

@Entity
public class User {
     .....
    @Embedded
    private Address address;

}

@Entity
public class Employee {
     .....
    @Embedded
    private Address address;

}

Это скопирует столбцы в таблице Employee и в таблице User.

Другой подходиспользовать адрес в виде таблицы, если вы хотите поделиться адресами:

@Entity
public class Address {
   ....
}

@Entity
public class User {
     .....
    @ManyToOne
    private Address address;

}

@Entity
public class Employee {
     .....
    @ManyToOne
    private Address address;

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